Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在viewDidUnload中发布是否有任何区别?_Iphone_Xcode4_Viewdidunload - Fatal编程技术网

Iphone 在viewDidUnload中发布是否有任何区别?

Iphone 在viewDidUnload中发布是否有任何区别?,iphone,xcode4,viewdidunload,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 =

我是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;
}
我只想知道它对内存管理有好处,或者对内存管理没有影响。
为什么我们要用这个


提前谢谢

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

因此,在
ViewDidLoad
中进行分配并在
ViewDidUnload
中发布是一种很好的做法

嗯,


Akshay

调用viewDidUnload时卸载的不是视图控制器,而是它的视图视图控制器在解除分配之前保持活动状态。

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


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

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

- (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;
}
其他任何东西都应该在dealloc中发布

其思想是,如果调用viewDidUnload以释放一些内存,则可以完全从viewDidLoad方法重新创建视图

也看这个问题,


因此,如果我使用UIImageView、NSInteger、NSArray和UIScrollView,那么我必须在ViewDiUnload中将它们设为零??一般情况下,您可以在dealloc方法中完成这一切,正如您在大多数应用程序中看到的那样。但是关于这个问题,你可以在viewDidUnload中释放iamgeView、scrollview,然后设置为零。谢谢!!但是我可以在ViewDidUnload和dealloc函数中释放这些对象吗??或者它会导致任何内存泄漏??在viewDidUnload中,如果您释放任何变量并将其设置为“nil”,然后在dealloc中再次释放,则“什么也不会发生”……但如果您释放任何变量并“未设置为nil”,然后在dealloc中再次释放,则“应用程序将崩溃”。