我经常遇到包含大量IBOutlets的UIViewControllers,这些IBOutlets将控制器连接到其视图的子视图(通常是UILabels)。
按照“最佳实践”,即对所有UI元素使用保留:
除了在加载nib时自动使用之外,不会在UIViewController之外使用或设置有问题的IBOutlets(set方法仅在viewDidUnload和nib加载时使用)。
“最佳实践”的结果是:
这个特定的“最佳实践”的原因(据我所知)是要与您的保留一致。但是,一旦您开始拥有大量outlet,您更有可能在两种方法中的某个地方错过处理某些outlet,而不是正确更改outlet以保留那些您真正想要在视图消失后保留的特殊outlet。
除了我所知道的原因之外,是否存在其他原因需要遵循这个“最佳实践”,或者在子视图到UIViewController的视图的特定情况下,我应该完全自由打破这个“规则”?
按照“最佳实践”,即对所有UI元素使用保留:
@property(retain,nonatomic)UILabel *theElement1
,@property(retain,nonatomic)UILabel *theElement2
,...会在视图控制器的dealloc
和viewDidUnload
中产生大量的样板代码。除了在加载nib时自动使用之外,不会在UIViewController之外使用或设置有问题的IBOutlets(set方法仅在viewDidUnload和nib加载时使用)。
“最佳实践”的结果是:
dealloc
充斥着[theElement1 release]
,[theElement2 release]
等。viewDidUnload
中有[self setTheElement1:nil]
,[self setTheElement2:nil]
等。
这个特定的“最佳实践”的原因(据我所知)是要与您的保留一致。但是,一旦您开始拥有大量outlet,您更有可能在两种方法中的某个地方错过处理某些outlet,而不是正确更改outlet以保留那些您真正想要在视图消失后保留的特殊outlet。
除了我所知道的原因之外,是否存在其他原因需要遵循这个“最佳实践”,或者在子视图到UIViewController的视图的特定情况下,我应该完全自由打破这个“规则”?