我是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;
}
我只是想知道它对内存管理有好处,或者对内存管理没有任何影响 为什么我们用它?
提前致谢.. !!
答案 0 :(得分:3)
调用viewDidUnload时,不是视图控制器,而只是视图。 视图控制器保持活动状态,直到它被解除分配。
在viewDidUnload中,您必须释放属于视图的那些对象以及可以在viewDidLoad中重新创建的所有对象(因为当视图控制器需要重新创建其视图时,将再次调用viewDidLoad)。这包括您的所有商店。您还必须将这些变量设置为nil以避免过度释放它们。
因为在dealloc中,您应该释放视图控制器保留的所有对象,包括viewDidUnload中包含的对象。
答案 1 :(得分:2)
viewDidUnload用于释放在创建视图时可能发生的任何事情 - 这包括viewDidLoad中的内容,但也包括从xib文件内部创建的IBOutlet属性。这些都应该被释放并在viewDidUnload中设置为nil。
其他任何东西都应该在dealloc中发布。
这个想法是,如果调用viewDidUnload释放一些内存,可以从viewDidLoad方法中再次重新创建视图。
另见这个问题;
答案 2 :(得分:1)
这对内存管理有好处。如果在控制器卸载时释放与View控制器关联的对象,则可以有效地减少应用程序的内存占用量。即使您不使用它们,也可以保留对象,使您的应用程序更容易出现内存警告。最终终止。
因此,优良作法是在ViewDidLoad
&在ViewDidUnload
中发布。
HTH,
阿克沙伊