不要紧,如果我叫的超类第一件事情还是在最后的方法是什么? 例如
-(void)didReceiveMemoryWarning {
/* do a bunch of stuff */
[super didReceiveMemoryWarning];
}
与
-(void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
/* do a bunch of stuff */
}
其他方法,如viewWillAppear中,willRotateToInterfaceOrientation等同样的问题
我要寻找有意义的差异,不只是风格,或哲学(虽然这些也欢迎)。
典型的可可约定:
- 如果您正在执行建立,呼叫中超第一
- 如果您正在执行拆除,叫超级LAST
因此,初始化,viewDidLoad中,等属于第一种情况下。 存储器的警告,viewDidUnload和秋季的dealloc第二种情况下。
你也应该设计自己的课程遵循这一惯例。 任何偏差应特别指出。
相关SO回答:
`[超级viewDidLoad中]`惯例
补充:理呼叫建立过程中的超级第一,是要确保一切都在你的地方扩展功能之前。 其必然结果是,当你重新分配,你不希望任何超高德子类取决于要dealloced你有机会来处理它们。
这使得在下面的评论中指出感参考UI的更新。
这取决于功能,你要么想要做的事父类做的事或之前后。
例如,如果超持有一些UI元素,你扩展它和你的类将举行一些UI元素。 为了让大小以适合你的整个对象,你可能会调用父类来计算其元素的大小,然后添加到该尺寸的大小,你添加的元素。
这是没有意义的,否则 - 超类是不知道你的元素,因此它会覆盖你的计算。 再次,这取决于实现。
还有的地方,你需要调用父类方法作为最后一件事具体情况:
-(void)dealloc
{
...
[super dealloc];
}
文章来源: Does the timing of calling the method of the super class matter in ObjectiveC?