我喜欢使用界面构建器来设计ui元素,但我正在设计一个屏幕,其中根据条件显示不同的子视图。对我来说,更容易在单独的nib文件中设计这些子视图,然后在需要时将它们加载到视图控制器中。
e.g。我有以下活动视图,它是延迟加载的,它基本上是一个显示活动指示符的叠加层,我希望选择在不同的视图控制器中重用它。
以下是其中一个视图控制器中的getter方法
- (ActivityView *)activityView
{
if (!activityView) {
activityView = [[[UINib nibWithNibName:@"ActivityView" bundle:nil]
instantiateWithOwner:self options:nil] lastObject];
}
return activityView;
}
在nib文件中我没有设置所有者以匹配视图控制器,因为我希望多个视图控制器能够使用它,但我将顶级视图链接到ActivityView类,以便我可以自定义它的一些ui以编程方式。
这种方法似乎对我有用,但我想知道这是否是一个好方法?
在资源编程指南中,它说:
重要说明:您负责释放在完成这些对象后加载的任何nib文件的顶级对象。不这样做是许多应用程序中内存泄漏的原因。释放顶级对象后,最好通过将它们设置为nil来清除指向nib文件中对象的任何出口。您应该清除与所有nib文件对象关联的出口,而不仅仅是顶级对象。
如果我有ARC以及我需要做些什么,我不确定这是否仍然适用?
这是否意味着我需要在didReceiveMemoryWarning方法中设置self.activityView = nil?