Должно получить 20 ошибок ... но получить 0 ... при компиляции без объявления переменной экземпляра - PullRequest
2 голосов
/ 12 июля 2010

В своих приложениях для iPhone я регулярно делаю это в xCode v3.2.3:

  1. Объявление переменной BOOL в файле * .h
  2. Используйте @property в том же файле * .h.
  3. Используйте @sythesize в соответствующем файле * .m.

Я случайно забыл сделать # 1 ... но он все равно выполнил. 0 предупреждений. 0 ошибок. 0 ошибок анализатора.

Как это может быть? Разве мой код не должен быть загружен ошибками компилятора везде, где эта переменная пытается использоваться?

Ответы [ 2 ]

5 голосов
/ 12 июля 2010

Это особенность новой среды выполнения. См. этот вопрос для более подробной информации.

2 голосов
/ 12 июля 2010

Автоматический синтез переменных экземпляра (ivars) является функцией среды выполнения Objective-C 2.0 в OS X и новой среды выполнения iOS Objective-C.Директива @synthesize автоматически создаст необходимый ivar во время выполнения, если вы сами не объявили его.Это стало возможным благодаря не хрупкой поддержке ivar Objective-C 2.0.Таким образом, ошибок нет, и вы не должны их получать.

В конечном счете, хорошо, что вам не нужно объявлять ivars в интерфейсе класса.Они (вероятно) специфичные для реализации детали, которые вы не хотите видеть как часть открытого интерфейса класса.Обратите внимание, что используя категории классов, вы также можете автоматически синтезировать ivars для «приватных» свойств.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...