Я провел несколько тестов:
Согласно недавнему соглашению Objective-c, вам не нужно синтезировать свойства.
Если вы сделаете
@property (strong, nonatomic) Business* theBiz;
iOS автоматически создаст частную переменную ivar с именем _theBiz;
Если вы реализуете только геттер или сеттер, он работает нормально:
-(void)setTheBiz:(Business *)theBiz
{
_theBiz = theBiz;
}
Однако, если вы объявите ОБА, даже если одна из них просто пустая функция, вы получите ошибку компиляции.
-(void)setTheBiz:(Business *)theBiz
{
_theBiz = theBiz;
}
-(Business *) theBiz
{
}
Когда вы реализуете ОБА геттер и сеттер, вы получите ошибку компиляции, в которой говорится, что такой вещи, как _theBiz, не существует.
Это можно легко исправить, добавив:
@synthesize theBiz = _theBiz;
Но это разрушает весь смысл этой удивительной новой функции Objective-c.
Интересно, это так задумано или я просто что-то упускаю? Что делает яблоко?
Мое лучшее предположение, что это ошибка.
Ответ Гийома не касается этого факта.
Он сказал, что
по крайней мере был синтезирован один метод
Похоже, что _theBiz был бы создан, если бы был установлен только ОДИН геттер или сеттер. Когда установлены оба, он больше не создается, и это должно быть ошибкой. На самом деле вообще ничего не нужно устанавливать, и ивар все равно будет создан.
Единственный способ исправить это - явно сделать
@synthesize theBiz = _theBiz;
person
Anonymous White
schedule
19.10.2012
@property
объявляет iVar - person Tim Reddy   schedule 16.10.2012