Когда использовать `self` в Objective-C?
Уже более 5 месяцев я нахожусь в Objective-C, я также опубликовал свое первое приложение в App Store, но у меня все еще есть сомнения по поводу основной функциональности языка.
Когда я должен использовать self
доступ к iVars и когда я не?
При выпуске розетки пишешь self.outlet = nil
в viewDidUnload, а не в dealloc
ты пишешь [outlet release]
, Зачем?
4 ответа
Когда ты пишешь self.outlet = nil
метод [self setOutlet:nil];
называется. Когда ты пишешь outlet = nil;
вы получаете доступ к переменной outlet
непосредственно.
если вы используете @synthesize outlet;
затем метод setOutlet:
генерируется автоматически и освобождает объект перед назначением нового, если вы объявили свойство как @property (retain) NSObject outlet;
,
Очень очень важный блог, чтобы понять о свойствах метода getter-setter в цели c
Understanding your (Objective-C) self
http://useyourloaf.com/blog/2011/2/8/understanding-your-objective-c-self.html
Вы используете self, когда ссылаетесь на @property. Обычно это будет @ synthesize'd.
Вы не используете self, если ссылаетесь на "приватную" переменную. Как правило, я использую свойства для элементов пользовательского интерфейса, таких как UIButtons или для элементов, которые я хочу легко получить доступ из других классов. Вы можете использовать модификаторы @private, @protected для явного обеспечения видимости. Однако вы не можете использовать частные методы, которых нет в Objective-C.
Часть о nil, release и dealloc не связана с использованием "self". Вы освобождаете то, что вы сохранили, вы ничего не сохраняете.
Вы должны прочитать руководство Objective-C, оно хорошо написано и очень полезно.
Вы используете себя. когда вы получаете доступ к свойствам класса, в котором вы находитесь (следовательно, к себе). По сути, вы используете self, когда хотите сохранить значение, но только тогда, когда у вас есть retain в определении вашего свойства.
release просто освобождает объект, который вы сохранили. Вы не должны выпускать что-то, что не сохранили, потому что это приведет к краху (объект зомби).