我将[super viewDidLoad]
置于我的UIViewController中的viewDidLoad
之内会有所不同吗?即,它应该在我设置UIViewController的代码之后(在我的代码设置UIViewController之前)还是结束之后,或者它没有任何区别?
答案 0 :(得分:7)
你应该尽早打电话给super。否则,超类可能会干扰您自己的实现。假设UIViewController
会在viewDidLoad
中设置默认背景颜色(它不会):如果您在方法中设置自己的背景颜色然后调用super,它将重置为默认值可能导致混淆的颜色。
答案 1 :(得分:3)
是绝对的。
//superclass
-(void)viewDidLoad {
self.ivar = 4;
}
//subclass
-(void)viewDidLoad {
[super viewDidLoad];
self.ivar = 5;
}
//alternative subclass
-(void)viewDidLoad {
self.ivar = 5;
[super viewDidLoad];
}
这个例子很简单但显示两个子类都继承自同一个超类;其中一个在加载后将它的ivar设置为4,另一个将它的ivar设置为5。
我试着坚持上面所说的idz并且总是首先调用[super viewDidLoad];在调用[super dealloc]之前还要在dealloc中释放所有内容 - 即首先清除所有混乱 - 否则就是泄漏时间。
答案 2 :(得分:2)
你应该把它放在开头,以便你可以覆盖它做的任何事情(因为让我们面对它,这就是你首先要覆盖的原因)。或者以另一种方式看待它,你不应该把它放在你的任何代码之后,以防它撤消你做的任何事情。希望这对你有意义!
答案 3 :(得分:0)
文档实际上并不表示它是必需的,Apple的几个示例代码项目(例如,iPhoneCoreDataRecipes)根本不会调用[ super viewDidLoad ]
。将此与-viewWillAppear:
的文档进行比较,后者明确指出:
如果覆盖此方法,则必须在实施中的某个时刻调用super。
那就是说,称之为没有坏处。我的习惯是立即调用它,然后继续我的视图设置。