我不断遇到包含大量IBOutlets的UIViewControllers,它将控制器连接到其视图的子视图(通常是UILabels)。真的保留IBOutlet视图元素的最佳做法是什么?
继“最佳实践”,即使用保留的所有UI元素:@property (retain, nonatomic) UILabel *theElement1
,@property (retain, nonatomic) UILabel *theElement2
,...给我疯了大量的锅炉板代码dealloc
和viewDidUnload
的视图控制器。
从未在UIViewController(set-method仅用于viewDidUnload和nib加载时)中使用违规的IBOutlets,除非在加载nib时自动执行此操作。
从 “最佳实践” 的结果是:
dealloc
散落着[theElement1 release]
,[theElement2 release]
等viewDidUnload
与[self setTheElement1:nil]
,[self setTheElement2:nil]
等
然而,由于所有这些元素的无论如何都被视图保留,并且视图在适当的时候由UIViewController释放,我看到绝对没有任何理由让我手动管理这个。
这个特殊的“最佳实践”(据我所知)的原因是与你的保留一致。但是一旦你开始有大量的网点,你很可能会错过处理这两种方法中的某一个出口,而不是正确地改变网点以“保留”你想要的那些特殊网点即使在观点告别之后仍保留。
除了我所了解的或者我应该感觉在UIViewController的视图的子视图的特定情况下可以自由地打破这个“规则”,是否还有其他原因?
我喜欢这个问题的话题。 “真的” – VoodooChild 2010-06-24 17:47:49