View Controller 生命周期的各个方法的用法

- (void)awakeFromNib;
这个方法用的时候,outlet尚未链接起来,是view Controller刚从storyboard建的时候,没有彻底建好,不过可能有一些事情要在这个方法里面完成,好比splitViewDelegate,须要在很是早期完成。
 

- (void)viewDidLoad;app

用这个的时候,ViewController已经彻底好了,outlet也已经链接好了。可是尚未在屏幕上显示出来。
这个方法里面能够放不少设置的代码。
这个方法执行的时候,view的bounds尚未。先load,再appear嘛。哈
 
- (void)viewWillAppear:(BOOL)animated;
这个方法调用的时候,bounds已经有了。
你的视图只会loaded一次,可是会appear或者disappear不少次。因此不变的东西,放在viewDidLoad里面。和几何相关的,放在viewWillAppear里面。这点对项目的优化很重要的哦。。。哈哈
就好似顶层的view,旋转ipad什么的都须要改变顶层的view的大小,当一个view controller的生命周期到这里的时候,就能够在这里的最后时刻来调整view的排列或者几何特性。
这里也设置作一些lazy execution for performance.好比:须要按一个button,出现一个view什么的。
这里设置,开销很大。耗时很长的事情最好在viewWillAppear里另开一个线程运行,而后在view里面放一个小小的spinning wheel。
 
- (void)viewWillDisappear:(BOOL)animated
{
       [super viewWillDisappear:animated];
       [self rememberScrollPosition];
       [self saveDataToPermanentStore];
}
这个方法固然是要消失的时候啦。要消失的时候,仍是记得如今的运行状况的。因此能够记得scroll的position啦。可是,不要在这个方法里面写太多的东西哦,app会崩溃的。
另开线程来处理任何UI的改变,或者若是是不怎么废资源的话就直接写入硬盘。
 
- (void)viewDidAppear:(BOOL)animated;
- (void)viewDidDisappear:(BOOL)animated;
 
will的did版本。
在view显示以后使用。
 
- (void)viewWillLayoutSubviews;            did版本:- (void)viewDidLayoutSubviews;
在由frame的改变而触发输出subview以前,这个方法被调用
好比,在autorotation后,布局发生改变,此时能够设置subview的布局。
 
 
关于ratation的更多方法:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)anOrientation duration:(NSTimeInterval)seconds;
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOriention)orient duration:(NSTimeInterval)seconds;
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)anOrientation;
@property UIInterfaceOrientation interfaceOrientation;
 
生命周期里一个低内存的状况:
- (void)viewDidUnload
{
   self.faceView = nil;
}
低内存的时候,系统会卸载你的view,将会把你的controller的view从内存中清除出去,也就是中止全部有strong指向的指针。
可是对应的viewController是不会从heap清除出去的。
可是,仍是要把其余的outlet指针都设置为nil,由于,就怕其余的view有指向这个类型的strong指针,因此就不太同样了。因此要养成好习惯,把outlet型的指针设置为nil。
相关文章
相关标签/搜索