首页 > 代码库 > viewDidLoad执行早于initWithNibName

viewDidLoad执行早于initWithNibName

刚发现这个问题的时候太都头疼了,没有init怎么viewDidLoad呢??

后来发现这是因为重载的原因,父类里面同样有initWithNibName方法,这样执行的顺序就是:

 

initWithNibName(父类) ->  viewDidLoad (子类)-> viewDidLoad (父类)-> initWithNibName(子类)

 

中间的部分是交叉执行的,因为子类会调用[super viewDidLoad], 这样就会执行父类的viewDidLoad函数。

 

解决方法很简单:如果你父类里面initWithNibName没有做任何工作,直接删除就可以了。