iPhone应用程序的引导过程如下:
main.m →
MainWindow.xib →
AppDelegate.m →
ViewController.m →
ViewController.xib(如果有的话)
当一个视图控制器被创建,并在屏幕上显示的时候。
代码的执行顺序
1、 alloc
2、init (initWithNibName) 初始化对象,初始化数据
3、loadView
4、viewDidLoad
5、viewWillAppear
6、viewDidAppear
当一个视图被移除屏幕并且销毁的时候的执行顺序,
这个顺序差不多和上面的相反
1、viewWillDisappear
2、viewDidDisappear
3、dealloc
关于viewDidUnload :在发生内存警告的时候如果本视图不是当前屏幕上正在显示的视图的话,
viewDidUnload将会被执行,本视图的所有子视图将被销毁,以释放内存,此时开发者需要手动对viewLoad、viewDidLoad中创建的对象释放内存。
因为当这个视图再次显示在屏幕上的时候,viewLoad、viewDidLoad
当我们创建一个UIViewController类的对象时,通常系统会生成几个默认的方法,这些方法大多与视图的调用有关,
但是在视图调用时,这些方法的调用顺序如何,需要整理下。
通常上述方法包括如下几种,这些方法都是UIViewController类的方法:
- (void)viewDidLoad;
- (void)viewDidUnload;
- (void)viewWillAppear:(BOOL)animated;
- (void)viewDidAppear:(BOOL)animated;
- (void)viewWillDisappear:(BOOL)animated;
- (void)viewDidDisappear:(BOOL)animated;
下面介绍下APP在运行时的调用顺序。
1)- (void)viewDidLoad;
2) - (void)viewDidUnload;
3)- (void)viewWillAppear:(BOOL)animated;
4) - (void)viewDidAppear:(BOOL)animated;
5) - (void)viewWillDisappear:(BOOL)animated;
6) - (void)viewDidDisappear:(BOOL)animated;
上述方法的流程图可以简单用如下表示:
运行APP —> 载入视图 —> 调用viewDidLoad方法 —> 调用viewWillAppear方法 —> 调用viewDidAppear方法
aaaaaaaa
aaaaaaaa
aaaaaaaa
aaaaaaaa
aaaaaaaa
释放对象所有权
IOS程序启动执行顺序
http://www.yifeiyang.net/iphone-developer-advanced-3-iphone-application-startup-process/
IOS 开发 loadView 和 viewDidLoad 的区别
iPhone开发必不可少的要用到这两个方法。 他们都可以用来在视图载入的时候,初始化一些内容。
但是他们有什么区别呢?
viewDidLoad 此方法只有当view从nib文件初始化的时候才被调用。
loadView 此方法在控制器的view为nil的时候被调用。
此方法用于以编程的方式创建view的时候用到。 如:
- ( void ) loadView {
UIView *view = [ [ UIView alloc] initWithFrame:[ UIScreen mainScreen].applicationFrame] ;
[ view setBackgroundColor:_color] ;
self.view = view;
}
控制器中实现了loadView方法,那么你可能会在应用运行的某个时候被内存管理控制调用。
如果设备内存不足的时候, view 控制器会收到didReceiveMemoryWarning的消息。
默认的实现是检查当前控制器的view是否在使用。
如果它的view不在当前正在使用的view hierarchy里面,
且控制器实现了loadView方法,那么这个view将被release, loadView方法将被再次调用来创建一个新的view。