В общем, я называю мои свойства такими же, как мои переменные экземпляра; это предположение по умолчанию, которое используется в синтаксисе @property
. Если вы обнаружите, что сражаетесь со значениями по умолчанию, вы делаете это неправильно (или, по моему мнению, ваш системный пакет, что не относится к Cocoa / Cocoa-touch).
Ошибка компилятора, которую вы получаете, потому что использование свойства всегда должно иметь ссылку на объект, даже внутри вашей собственной реализации класса:
self.stuff = @"foo"; // property setter
[stuff release]; // instance variable
stuff = @"bar"; // instance variable
return self.stuff; // property getter
Я знаю, что многие программисты Какао не согласны, но я думаю, что это плохая практика - использовать свойства внутри реализации вашего класса. Я бы предпочел увидеть что-то вроде этого:
-(void) someActionWithStuff: (NSString*) theStuff {
// do something
[stuff release];
stuff = [theStuff copy];
// do something else
}
чем это:
-(void) someActionWithStuff: (NSString*) theStuff {
// do something
self.stuff = theStuff;
// do something else
}
Я предпочитаю делать управление памятью как можно более подробно. Но даже если вы не согласны, использование формы self.stuff
поможет любому опытному программисту Objective-C вызывать свойство, а не обращаться к переменной экземпляра. Это тонкий момент, который новичкам легко замаскировать, но после того, как вы некоторое время поработали с Objective-C 2.0, это довольно ясно.