IOS中的生命周期及加载过程

本人录制技术视频地址:https://edu.csdn.net/lecturer/1899 欢迎观看。

这一节,主要讲解UIKit框架下,应用程序的生命周期,UIView的生命周期,异常处理流程及控制器的加载过程。


四大对象关系图



应用程序生命周期



对上面的流程进行说明:

1. 程序启动执行,先进入main函数:

int main(int argc, char * argv[])

2. 执行UIApplicationMain函数:

return UIApplicationMain(argc, argv, nil, NSStringFromClass([HKAppDelegate class]));

上面函数的

第1,第2个参数是系统main函数自动处理的参数,就不做说明了。

第3个参数:应用程序象征的类名(只能传UIApplication或其子类,若为nil,默认就是UIApplication)

第4个参数:UIApplication代理的类名


3. UIApplicationMain方法执行完毕后,就初始化完成UIApplication并利用它的代理开启消息循环机制。

4. 代理监听事件是一个run loop,会一直监听上图所列举的那些事件,直到程序退出。

控制器的初始化过程
在应用程序生命周期过程中,在“程序加载完毕”,即
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
方法中,应该完成"根控制器"的初始化工作。

大致代码如下:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor redColor];

    self.viewController = [[LFViewController alloc] initWithNibName:@"LFViewController" bundle:nil];
    
    // 显示控制器的View
    [self.window addSubview:self.viewController.view];
    
    // 设置窗口的根控制器
    self.window.rootViewController = self.viewController;
    
    [self.window makeKeyAndVisible];
    return YES;
}

1. 一定要对定义的viewController属性进行强引用工作,不然 didFinishLaunchingWithOptions 方法执行完毕后,LFViewController 对象就销毁了。

@property (strong, nonatomic) LFViewController *viewController;

2. 控制器 LFViewController 加载的具体流程说明:

I.  控制器LFViewController的view是延迟加载的

II. 用到view时,就会调用控制器的loadView方法加载view

III.loadView加载view的默认过程(UIViewController的默认实现)

     1> 如果nibName有值,就会加载对应的xib文件来创建view

     2> 如果nibName没有值

           1) 优先加载LFView.xib文件来创建view

           2) 加载LFViewController.xib文件来创建view

           3) 如果没有找到上面所述的xib文件,就会用代码创建一个黑色的view


页面生命周期示意图



在页面生命周期的流程图中,在viewDidDisappear的时候,有可能出现内存不足的情况,就会调用viewDidUnload方法进行内存警告处理工作,流程图如下:



比较综合的一张流程图如下:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋恨雪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值