我需要调用[super viewDidUnload]吗?

cho*_*own 4 objective-c super ios viewdidunload

我已经看到一些苹果公司的例子可以打电话,[super viewDidUnload];而另一些则没有.我读了一篇文章(几个月前,所以我不记得那个网址),说这[super viewDidUnload];是不必要的,但除此之外没有解释.

有没有明确的理由为什么或为什么不告诉超级的viewDidUnload
并且,(如果应该这样做)在将所有属性设置为nil,之后或之前是否重要之前,我是否应该调用super ?

- (void)viewDidUnload {
    // Is this necessary?
    // [super viewDidUnload];

    self.tableDataSource = nil;
    self.titleLabel = nil;

    // Is it better to call super before or after nil'ing properties?
    // [super viewDidUnload];
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

Rui*_*res 7

1-有没有明确的理由为什么或者为什么不告诉超级的viewDidUnload?

老实说,我不知道不称呼它的后果.您可以尝试不调用它,一切顺利,但想象一下,Apple会添加一些重要的代码,这些代码将在[super viewDidUnload]调用时运行,现在会发生什么?可能会发生不好的事情,你会花费宝贵的时间来解决你的问题.我的规则是:当覆盖时,打电话给超级.

2 - 在将我的所有属性设置为nil,之后或者它是否重要之前,我是否打电话给super?

它确实很重要,当我打开[ super dealloc]发布我的物品之前] 时,我看到了坏事.同样地,我看到我的UI很慢,因为我之前做过计算[super viewDidLoad].它总是取决于你想要达到的目标.

最重要的是,我在我的项目中所做的viewDidUnload是:

//发布我的观点

[super viewDidUnload];

至于iOS6:

该方法已被弃用.

  • _"[如果] Apple添加了一些重要的代码,当调用`[super viewDidUnload]`时会运行,现在会发生什么?"_ - 这是一个非常好的观点,直到现在还没有真正让我想到. (3认同)