Хорошо, поэтому в последнее время у меня появилась эта предположительная дурная привычка объявлять свойства моего класса с помощью @property
, создавать геттеры и сеттеры с @synthesize
и просто использовать их везде, где они мне нужны, как self.name
без ссылки на внутренний ивар(пусть @synthesize
сделает свою работу)
Теперь, конечно, это не позволяет мне получить доступ к внутреннему ивару (например, name_
), но из того, что я кодировал до сих пор, я не сделал 'это действительно нужно.Для свойств, доступных только для чтения, я не использую @synthesize
, но сам реализую метод получения.
Все выглядит хорошо, но почему-то у меня возникает ощущение, что это неправильно, потому что все библиотеки с открытым исходным кодомМы просмотрели, также объявили ivar и использовали его в коде.@property
+ @synthesize
и нет ивара - это определенно ленивый выбор, но каковы недостатки?Может кто-нибудь дать мне какой-нибудь совет?
Кроме того, я читал, что в качестве общего совета можно использовать self.propertyName
в любом месте кода вашего класса, кроме методов dealloc
и init
.Но до тех пор, пока вы убедитесь, что объект инициализируется:
-(id) init
{
if( (self=[super init] )) {
}
return self;
}
и вы удалите все наблюдатели значения ключа перед вызовом [super dealloc]
все должно быть в порядке.Верно?