在具有ARC最佳实践的UIViewController
的实例中,将“释放”self.myOutlet = nil
中主视图的任何保留子视图(例如- viewDidUnload
),我猜是{此时{1}}并非绝对必要。
如果定义了另外的self.view = nil
ed属性并将其指定为...
self.anotherProperty = self.view;
或
_anotherProperty = self.view; //假设“_anotherProperty”是ivar
...那么retain
是必要的吗?
答案 0 :(得分:0)
viewDidUnload
中没有任何内容(我假设我们正在谈论在iOS 6之前运行,因为在iOS 6中不再卸载视图,因此不再调用viewDidUnload
)是“必要”;这只是卸载东西的可选机会。
但是如果你想按照viewDidUnload
的约定正确卸载东西,你应该取消你的财产吗?是。 1)如果没有,您的属性仍将保留视图对象,防止它被释放,这是卸载视图的点。 2)视图已被卸载,这意味着self.view
被设置为nil,并且当我们决定加载视图时将被设置为新加载的视图。如果您希望您的属性始终指向self.view
,那么您需要在卸载时将其设置为nil,并将其设置为viewDidLoad
中加载的视图。