当一个视图控制器被创建,并在屏幕上显示的时候。 代码的执行顺序
1、alloc
创建对象,分配空间
2、init (initWithNibName)
初始化对象,初始化数据
3、loadView
加载视图。
4、viewDidLoad
载入完成,可以进行自定义数据以及动态创建其他控件
5、viewWillAppear
视图将出现在屏幕之前,马上这个视图就会被展现在屏幕上了
6、viewDidAppear
视图已在屏幕上渲染完成
当一个视图被移除屏幕并且销毁的时候的执行顺序,这个顺序差不多和上面的相反
1、viewWillDisappear
视图将被从屏幕上移除之前执行
2、viewDidDisappear
视图已经被从屏幕上移除,用户看不到这个视图了
3、dealloc
视图被销毁,此处需要对你在init
和viewDidLoad
中创建的对象进行释放
当我们创建一个UIViewController
类的对象时,通常系统会生成几个默认的方法,这些方法大多与视图的调用有关,但是在视图调用时,这些方法的调用顺序如何,需要整理下。
通常上述方法包括如下几种,这些方法都是UIViewController
类的方法:
- (void)loadView;
- (void)viewDidLoad;
- (void)viewWillAppear:(BOOL)animated;
- (void)viewDidAppear:(BOOL)animated;
- (void)viewWillDisappear:(BOOL)animated;
- (void)viewDidDisappear:(BOOL)animated;
下面我将讲解一下APP在实际调用的过程中所运行的顺序:
1.在第一次打开应用后,会立即加载四个方法他们分别是:
- (void)loadView;
- (void)viewDidLoad;
- (void)viewWillAppear:(BOOL)animated;
- (void)viewDidAppear:(BOOL)animated;
其中要注意的是:在视图将要出现之前我们是不是应该将所有的控件铺好呢,答案是肯定的,在用户体验的角度考虑当用户在进入APP后应该立即就能看见所有的信息展示(在网络较好的前提下),所以对于开发者来说应该在第二个方法中进行所有的空间及信息的载入等工作,这样用户在打开APP后立即就能看见所有的信息了.
当进入第二个页面的时候其加载(push到新的界面)顺序是:
(1)当前界面会走的方法
- (void)viewWillDisappear:(BOOL)animated;
(2)新加载的视图走的方法
- (void)loadView;
- (void)viewDidLoad;
- (void)viewWillAppear:(BOOL)animated;
(3)同时走的方法:
当前界面
- (void)viewDidDisappear:(BOOL)animated;
新加载的方法
- (void)viewDidAppear:(BOOL)animated;
当返回第一个界面的时候(pop返回原界面)顺序是:
(1)当前的界面会走的方法
- (void)viewWillDisappear:(BOOL)animated;
(2)要返回的视图走的方法
- (void)loadView;(该方法可能走也可能不走,因为视图已经在之前加载完毕,但有时,程序员会在进入一个界面后清除数据,因此根据具体情况而定)
- (void)viewDidLoad;(该方法可能走也肯能不走,因为视图已经在之前加载完毕,但有时,程序员会在进入一个界面后清除数据,因此根据具体情况而定)
- (void)viewWillAppear:(BOOL)animated;
(3)同时走的方法:
当前界面
- (void)viewDidDisappear:(BOOL)animated;
新加载的方法
- (void)viewDidAppear:(BOOL)animated;