Ale*_*sky 24 oop inheritance objective-c
什么是最好的使用[super ... any method name].最近我发现,在dealloc中,[super dealloc]必须站在同一个目的.因为任何以前没有使用的变量都可以被垃圾填充,如果我们在它之后设置[super dealloc]它是一件罕见的事情,但它是可能的.在此之后我们将在我们的应用程序中崩溃.
那么什么是超级方法的最佳使用,例如最适合使用的方法-(void)viewWillAppear:(BOOL)animated.[super viewWillAppear:(BOOL)animated]身体开始或最终的最佳位置在哪里?
zou*_*oul 57
通常的经验法则是,当你重写一个进行某种初始化的方法时,先调用super然后再做你的东西.当你覆盖某种拆解方法时,你会超级呼叫:
- (void) setupSomething {
[super setupSomething];
…
}
- (void) tearDownSomething {
…
[super tearDownSomething];
}
Run Code Online (Sandbox Code Playgroud)
第一种是类似的方法init…,viewWillAppear,viewDidLoad或setUp.第二类是喜欢的东西dealloc,viewDidUnload,viewWillDisappear或tearDown.这不是硬性规则,它只是从方法所做的事情开始.
Özg*_*gür 17
只需查看相应的文档即可.例如,何时在UIViewController的重写方法中调用super :
didReceiveMemoryWarning:您可以覆盖此方法(根据需要)以释放视图控制器使用的任何其他内存.如果这样做,请确保在某个时刻调用超级实现以允许视图控制器释放其视图.[意味着顺序并不重要.]
loadView:这个方法的自定义实现不应该调用super.
setEditing:animated:此方法应在更新其视图之前调用super的实现.[意味着秩序很重要.]
viewWillAppear,viewDidAppear, viewWillDisappear,viewDidDisappear:如果重写此方法,则必须在实现中的某个时刻调用super.[意味着顺序并不重要.]
dealloc:如果你实现了这个方法但是正在为iOS 2.x构建应用程序,你的dealloc方法应该释放每个对象,但是在调用super之前还应该将对象的引用设置为nil .[意味着秩序很重要.]
您是否在viewDidLoad中意识到类似的super规则并且未提及viewDidUnload方法?因为你不需要在这些中调用super.