Я знаю, что если я сохраню IBOutlet, используя свойство, тогда я должен установить его равным nil в viewDidUnload
, но как насчет других?
Например, у меня есть три подпредставления view1, view2 и view3, которые загружаются из пера и это заголовочный файл контроллера
@interface MyViewController : UIViewController {
IBOutlet UIView *view1;
UIView *view2;
//no reference for view3
}
@property (nonatomic, retain) IBOutlet UIView *view2; //property view2 is an IBOutlet!!
@end
и метод viewDidUnload
- (void)viewDidUnload {
self.view2 = nil;
//[view1 release];
//view1 = nil;
[super viewDidUnload];
}
Должен ли я освободить view1 и установить его на ноль? или UIViewController установит для меня ноль?
что насчет view3?
также я должен выпустить view1 в dealloc
?
редактировать:
Я думаю, что многие люди не понимают мой вопрос
Во-первых, view1 - это IBOutlet, который объявлен как ивар, и назначить ивару не удастся. Я знаю, что UIViewController определенно сохранит его, но должен ли я его выпустить или UIViewController выпустит его для меня? Если UIViewController выпустит его, то нет смысла выпускать его снова.
Во-вторых, view2 также является IBOutlet, хотя он объявлен как свойство, а не ivar.
@property (nonatomic, retain) IBOutlet UIView *view2;
Это свойство сохранения, поэтому установите его, оно сохранит его, поэтому я знаю, что для его освобождения я должен установить его на ноль. У меня нет проблем с этим.
Для view3 для него нет ссылки, поэтому я предполагаю, что мне не нужно ничего с этим делать. Я также предполагаю, что нет необходимости делать ссылку на every
объект в nib.