在我看来,内存使用是iPhone编程时需要注意的主要事项之一。常见的模式是在viewWillLoad中创建子视图,标签等,并在viewWillUnload中将它们设置为nil。我理解这背后的原因。
但是为什么不在viewWillDisappear而不是viewWillUnload中将所有内容(除了花费很长时间构建的内容)设置为nil?
当您的视图消失时,您不再需要为UI项目分配内存。当您的视图再次出现时,您可以再次创建UI项目。
我知道你可以做我刚刚描述的事情......我知道这完全有可能,但我的问题是为什么这不是常见模式?
分配新内存有隐藏的主要成本吗?它会引起奇怪的行为吗?这根本没用吗?
答案 0 :(得分:1)
viewDidLoad
和viewDidUnload
-(void)viewDidLoad
,-(void)viewDidUnload
和- (void)didReceiveMemoryWarning
可以最大限度地提高内存和性能。答案 1 :(得分:0)
好吧,如果您只是显示一个modelviewcontroller,那么它背后的视图将会卸载,这将使该视图返回缓慢。这就是viewDidLoad
和viewDidUnload
不用于viewWillAppear
和viewWillDisappear
(或viewDidDisappear
)的原因。
分配对象很慢,所以你应该只在需要时才这样做。
viewDidLoad
和viewDidUnload
会自动调用不再可见的视图,系统需要更多内存。
例如,当系统调用applicationDidReceiveMemoryWarning时,会发生这种情况,然后UINavigationController将卸载堆栈中的所有视图,但不会卸载viewControllers。这样可以很容易地返回到卸载时视图所处的任何状态。