Iphone dev - ViewDidUnload

时间:2012-03-04 23:37:17

标签: iphone automatic-ref-counting

我正在使用ARC

在我正在观看的一些教程中,他曾经制作了一个UILabel,然后在方法ViewDidUnload中写道:self.theLabelVariable = nil; 从那时起我还没有看到他再次在ViewDidUnload中写任何东西..但是。

我对该方法应该使用的代码感到有点困惑。

1。 什么时候应该写什么? 它的评论是: “释放主视图的任何保留子视图。例如,self.myOutlet = nil;” 虽然

,但不确定那是什么意思

2。 它还有一个“[超级ViewDidUnload]”这是做什么的?

3。 有人说“当你不打算再使用它时,将其设为零是一个好主意”。 但是在教程中,有人写了“self.TheLabelVariable = nil”,当我点击主页按钮然后再次启动应用程序时,一切正常。 或者当你点击主页按钮时它不是cViewDidUnload? 我想第三个问题是:它何时被称为?

2 个答案:

答案 0 :(得分:0)

您应该对所有IBOutlets执行此操作。您应该将它们全部设置为nil[super viewDidUnload];正在卸载超级视图!有点像[super viewDidLoad];

答案 1 :(得分:0)

1 - 您应该使用viewDidUnload来释放(如果它是属性,则设置为nil)卸载视图时不需要的任何对象,例如视图,并且您将在viewDidLoad上再次重新创建。示例:卸载视图时不需要标签(通过按主页按钮),然后释放它,然后在视图加载时再次创建它(应用程序出现)。

2 - [super something]调用超类上的方法。例如,如果你有一个类是UIViewController的后代,则调用[super viewDidUnload]将执行Apple的UIViewController viewDidUnload代码(可能是空的......或者不是)。

3 - 请参阅1上的示例。但事情是:当你不再需要一个对象时,将它设置为nil,这样它就可以被释放,而你不会浪费内存。

如果我错过了某些内容或者您有什么不明白的地方,请告诉我。

修改

对于从名为IBOutlets的XIB文件(界面构建器)初始化的视图,您不需要执行self.label = nil;因为UIViewController为你做了。就像它为你初始化它一样,它也会释放它。