2

我是 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;
}

我只想知道它对内存管理有好处还是对内存管理没有影响。
为什么我们使用它?

提前致谢..!!

4

3 回答 3

3

调用 viewDidUnload 时卸载的不是视图控制器,而是它的视图视图控制器保持活动状态,直到它被释放。

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

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

于 2011-08-17T08:54:32.067 回答
2

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

其他任何东西都应该在 dealloc 中释放。

这个想法是,如果调用 viewDidUnload 来释放一些内存,则可以完全从您的 viewDidLoad 方法重新创建视图。

另见这个问题;

使用 viewDidUnload 在 iPhone 上进行内存管理

于 2011-08-17T08:58:29.737 回答
1

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

因此,分配 inViewDidLoad和释放 in是一种很好的做法ViewDidUnload

高温下,

阿克谢

于 2011-08-17T08:50:32.660 回答