问题一:看到很多刚开始写iOS的人,喜欢在控制器的init方法里写一些像:self.navigationItem.title = @"xxx";self.view.backgroundColor = [UIColor whiteColor];等之类的方法,很不推荐这样写,理由有二:
1,首先,从别处初始化本控制器时,刚刚init时并没有初始化出来视图什么的,只是开辟了一块小内存出来,用来记录和存储本控制器,这是为了什么时候需要什么时候再真正去实现它,从而保证了低内存。试想,如果一个控制器持有了好多其他控制器的实例(已属性的形式),那么如果都在实现状态的话,就等于开辟了这么多内存出来,显然是不能接受的。
2,其次,会导致一些其他的问题,比如:我初始化一个控制器时,需要对其传参,然后在其viewdidload里面用参数请求网络数据。如果在跳转之前的init时,就已经开始访问视图属性,那么就会走viewdidload,然而,这时还没有把参数传给本控制器,导致请求时参数为空,如果不加判断,就可能导致崩溃。
综上,不建议在init方法里访问本控制器视图属性。
二:总结中。。。。