在viewDidUnload中释放会有什么不同吗?

时间:2011-08-17 08:40:46

标签: iphone xcode4 viewdidunload

我是iPhone开发的新手。

我在我的应用中使用了一些按钮和标签。我在dealloc函数中释放所有这些按钮和标签 我也在viewDidUnload中发布它们。

- (void)viewDidUnload
{
[super viewDidUnload];
self.ans1 = nil;
self.ans2 = nil;
self.ans3 = nil;
self.ans4 = nil;
self.button = nil;
self.button2 = nil;
self.button3 = nil;
self.button4 = nil;
}

我只是想知道它对内存管理有好处,或者对内存管理没有任何影响 为什么我们用它?

提前致谢.. !!

3 个答案:

答案 0 :(得分:3)

调用viewDidUnload时,不是视图控制器,而只是视图视图控制器保持活动状态,直到它被解除分配。

在viewDidUnload中,您必须释放属于视图的那些对象以及可以在viewDidLoad中重新创建的所有对象(因为当视图控制器需要重新创建其视图时,将再次调用viewDidLoad)。这包括您的所有商店。您还必须将这些变量设置为nil以避免过度释放它们。

因为在dealloc中,您应该释放视图控制器保留的所有对象,包括viewDidUnload中包含的对象。

答案 1 :(得分:2)

viewDidUnload用于释放在创建视图时可能发生的任何事情 - 这包括viewDidLoad中的内容,但也包括从xib文件内部创建的IBOutlet属性。这些都应该被释放并在viewDidUnload中设置为nil。

其他任何东西都应该在dealloc中发布。

这个想法是,如果调用viewDidUnload释放一些内存,可以从viewDidLoad方法中再次重新创建视图。

另见这个问题;

memory management on the iPhone with viewDidUnload

答案 2 :(得分:1)

这对内存管理有好处。如果在控制器卸载时释放与View控制器关联的对象,则可以有效地减少应用程序的内存占用量。即使您不使用它们,也可以保留对象,使您的应用程序更容易出现内存警告。最终终止。

因此,优良作法是在ViewDidLoad&在ViewDidUnload中发布。

HTH,

阿克沙伊