XCode имеет плохую проверку синтаксиса для свойств Objective C? - PullRequest
1 голос
/ 20 сентября 2010

Я непреднамеренно скомпилировал следующий оператор:

manager.groupName - lastGroupName;

Вместо:

manager.groupName = lastGroupName;

Я пытаюсь понять, почему компилятор даже не выдает предупреждение для предыдущего оператора Iнепреднамеренно предоставляется.Оператор не имеет никакого эффекта, даже если он допустим вычитать указатели друг от друга.

И groupName, и lastGroupName имеют тип (NSString *).Свойство groupName объявлено как:

@property (nonatomic, retain) NSString *groupName;

Интересно, стоит ли мне посетить bugreporter или есть причина, по которой XCode не предоставляет диагностику.

Ответы [ 4 ]

5 голосов
/ 20 сентября 2010

Это допустимое утверждение в C и, следовательно, в Objective-C, поэтому компилятору не нужно предупреждать об этом. Вы можете добавить флаг предупреждения -Wunused-value в настройки компилятора. Это предупреждает о заявлениях без эффекта как это.

Как правило, есть много флагов, чтобы сообщить компилятору, о чем именно предупреждать. У всех разные представления о том, что хорошо, и о чем следует предупреждать. Если компилятор выдает слишком много предупреждений, они становятся бесполезными.

Также обратите внимание, что clang действительно генерирует лучшие предупреждения и сообщения об ошибках, но это не значит, что он автоматически выдаст больше предупреждений. Он также имеет те же флаги для включения и отключения определенных предупреждений, которые есть у gcc.

0 голосов
/ 20 сентября 2010

Зарегистрированные разработчики могут загрузить бета-версию XCode 4, которая улучшает проверку синтаксиса в интерфейсе "clang" 2.0. Вы можете получить это сейчас, выбрав «llvm» с clang 1.5 в качестве компилятора вместо GCC. В настоящее время Apple рекомендует использовать интерфейс GCC и LLVM 1.5, но вы все равно будете застревать в ужасных сообщениях об ошибках GCC.

Я бы рекомендовал скачать XCode 4 и опробовать код на этом. Вы можете найти некоторые существенные ошибки, которые можно вернуться и исправить в XCode 3 перед выпуском.

Кроме того, периодически делая «Очистить все» и «Компилировать и анализировать», вы найдете много распространенных ошибок. Настоятельно рекомендуется, особенно если вы застряли на чем-то.

0 голосов
/ 20 сентября 2010

Это допустимый синтаксис, поэтому не следует ожидать ошибки.Это кажется бесполезным, и высококачественный компилятор может выдать предупреждение.

Во время выполнения результат будет другим.Если только я не запомню, это неопределенное поведение, если только два указателя не совпадают или, по крайней мере, не указывают на один и тот же массив.

0 голосов
/ 20 сентября 2010

XCode не имеет лучшей проверки синтаксиса, хотя, как предполагается, будет намного лучше в версии, которая скоро выйдет (я думаю, сейчас в бета-версии 4.0).

...