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

这一节,主要讲解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方法进行内存警告处理工作,流程图如下:

时间: 2024-10-13 23:29:35

IOS中的生命周期及加载过程的相关文章

iOS UI-视图控制器的生命周期、加载方法和模态视图方法

1 #import "ViewController.h" 2 #import "SecondViewController.h" 3 4 @interface ViewController () 5 6 @end 7 8 @implementation ViewController 9 10 11 // 视图控制器的生命周期 12 // 视图控制器的加载方法 13 // 模态视图方法 14 15 /* 16 // 视图控制器的加载方法 17 - (instancety

iOS中的生命周期

对于一个iOS app来讲,生命周期是一个十分至关重要的东西.对于一个app来讲控制着app的开启.睡眠.关闭等状态:对于一个页面的来讲,控制页面的加载.显示.消失:对于一个View或者一个普通的类来讲,控制着初始化.绘制.释放. 一.AppDelegate 当你创建一个iOS项目时,在appDelegate中你会看到如下六个方法,他们分别控制着不同的app生命周期 -(BOOL)application:(UIApplication *)application didFinishLaunchin

Activity的生命周期及加载模式

当Activity运行时,它的活动状态是由Android以栈的形式管理的,当前活动的Activity位于栈顶.并且Activity可以类似QQ的隐身,下线,上线等等,这就是它的生命周期. 1.Activity的生命周期 Activity的生命周期大致一共分为4种: 活动状态:位于前台,就是你能看的见 暂停状态:其他的Activity位于前台,该Activity依然可见,一般是部分可见,只是不能获得焦点. 停止状态:该Activity不可见,失去焦点. 销毁状态:该Activity结束.或者所在进

Activity的生命周期与加载模式(一)

Activity是android应用最重要的组成单元之一(另外三个是Service.BroadcaseReceiver.ContentProvider),Activity的功能是向用户呈现不同的操作界面.一个android应用通常有多个activity组成activity栈,当前活动的activity位于栈顶. 当Activity处于Android应用中运行时,同样受系统控制有其自身的生命周期. 下面详细介绍Android的生命周期: ***总结起来大致有4个状态*** 活动状态:当前的Acti

Activity的生命周期与加载模式

前言: 接触Android快两个礼拜了,虽然已开发了一个非常简单的app,但却还没有理清Activity的生命周期,自然对它里面的几种方法的含义没有彻底清楚的认识,今天好好总结一下. 一.Activity的生命周期: (1)运行状态:Activity位于前台,用户可见,可以获得焦点. (2)暂停状态:其他Activity位于前台,该Activity依然可见,只是不能获得焦点. (3)停止状态:该Activity不可见,失去焦点. (4)销毁状态:该Activity结束,或者Activity所在进

iOS中xib与storyboard各种加载

xib 加载自定义View UIView *view = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil][0]; xib 加载自定义控制器 UIViewController *vc = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; storyboard 加载自定义控制器 UISto

【旧文章搬运】Windows中全局钩子DLL的加载过程

原文发表于百度空间,2011-03-24========================================================================== 看雪上别人问的一个问题,顺便在此记录下吧~~ kd> kvn # ChildEBP RetAddr Args to Child 00 0012f7b8 77d2dbfb 0012f81c 00000000 00000008 kernel32!LoadLibraryExW+0x2 (FPO: [Non-Fpo]

iOS开发之控制器创建与加载(生命周期)

1.如何创建一个控制器 控制器常见的创建方式有以下几种: (1)通过storyboard创建 (2)直接创建 MJViewController *mj = [[MJViewController alloc] init]; (3)指定xib文件来创建 MJViewController *mj = [[MJViewController alloc] initWithNibName: @"MJViewController" bundle:nil]; 注意,创建xid后还要设置xid中哪个vi

(转)JVM类生命周期概述:加载时机与加载过程

原文地址: http://blog.csdn.net/justloveyou_/article/details/72466105 JVM类加载机制主要包括两个问题:类加载的时机与步骤 和 类加载的方式.本文主要阐述了第一个问题,关于类加载的方式等方面的内容,包括JVM预定义的类加载器.双亲委派模型等知识点, 一个Java对象的创建过程往往包括两个阶段:类初始化阶段 和 类实例化阶段. 注意,本文内容是以HotSpot虚拟机为基准的. 一.类加载机制概述 我们知道,一个.java文件在编译后会形成