Cocoa中的超级viewDidUnload

时间:2010-07-22 18:27:20

标签: objective-c cocoa

在函数viewDidUnload中,它最初是空的。但是,我正在按照他们编写的函数结尾的教程[super viewDidUnload]。我注意到在dealloc函数中,[super dealloc]会自动写在最后。为什么不在viewDidUnload结束时自动写入?这有什么不同吗?它做了什么?

此外,这是一个Cocoa问题,还是一个Objective-C问题?

2 个答案:

答案 0 :(得分:3)

此链接可能有所帮助:iPhone: [super viewDidUnload] calling order

基本上,如果超类只是UIViewController[UIViewController viewDidUnload]什么也不做,所以这就是为什么它不会自动添加。

答案 1 :(得分:0)

在功能结束时调用它。

我在开始时打电话时遇到了很多错误。我发现网上很多地方都在讨论这个话题,有些人说开始,有人说最后。在我研究之前,我认为应该在最后调用它,因为语言的结构和性质的类似模式(例如如何处理触摸事件)。

我的逻辑表明,如果我打算调用相关对象的超级或父级,我还必须认为父级或超级组件在其默认实现中不知道子对象的存在,谁知道它可能会做什么。因此,当超越这种方法时,可以合理地认为当将outlet和属性设置为nil时,super的卸载方法可能会在视图控制器中卸载视图,同时这些插座仍然存在。

由于我发现的所有问题和答案,没有明确的解决方案。 Apple没有立即给出答案,但它们提供了对如何加载和卸载视图的理解。我放弃了寻找这个例子的例子,我坚持在这个函数结束时调用super的逻辑。

我不会做的是假设我可以猜出在私有API中运行的代码是什么,除了苹果文档或苹果开发人员以外的任何人都会得到正确的答案。然而,这是我的建议,基于我所经历的,也许正确的答案是它应该是/或取决于你在方法中做了什么。接受更多建议。