IOS的生命周期

iOS的生命周期

2016-09-01  本文已影响27人  箫声_筱昇
  • iOS应用程序一般都是由自己编写的代码和系统框架组成。系统框架提供了一些基本的infrastructure给APP来运行,而开发者则自己编写代码定制APP的外观和行为,了解iOS infrastructure及其如何工作对编写APP很有帮助。

Main函数入口

所有基于C编写的APP的入口都是main函数,但iOS应用程序有点不同。不同就是你不需要为iOS应用程序而编写main函数,当你使用Xcode创建工程的时候就已经提供了。除非一些特殊情况,否则你不应该修改Xcode提供的main函数实现。实例代码见下

#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main ( int argc, char *argv[] ) 
  {
    
    @autoreleasepool{
              return UIApplicationMain(argc, argv ,nil , NSStringFromClass([AppDelegate class]));
     }
  }

上面实例代码中有一个很重要的函数UIApplicationMain,它主要是创建APP的几个核心对象来处理一下过程:
1,从 可用Storyboard文件加载用户界面;
2,调用APPDelegate自定义代码来做一些初始化设置
3.强将APP放入Main Run Loop环境中来影响和处理与用户交互产生的事件。

应用程序的架构。

iOS的应用程序都遵循Model-View-Controller的架构,Model负责存储数据和处理业务逻辑,View负责显示数据和用户交互,Controller是两者的中介,协调Model和View相互协作。它们的通讯规则如下。
1.Controller能够访问Model和View,Model和View不能相互访问


2.当View与用户交互产生事件时,使用target-action方式来处理。

3.当View需要处理一些特殊UI逻辑或获取数据源时,通过delegate或data source方式交给Controller来处理


4.Model不能直接与Controller通信,当Model有数据更新时,可以通过Notification或KVO(Key Value Observing)来通知Controller更新View


了解iOS的MVC设计模式之后,我们从下图了解在NVC模式下iOS应用程序有哪些管家对象以及它们职责主要是什么?

Main Run Loop

一个iOS应用程序的main run loop主要作用是处理所有与用户相关的事件。UIApplication对象在启动就设置main run loop 和使用它来处理事件和更新基于view的界面。正如它的名字显示,main run loop是运行在应用程序的主线程。这样就确保与家收到用户相关的事件被有序地处理。
下入显示main run loop 的架构和用户事件最终是怎样被引用程序处理。当用户与设备交互时,系统就会生成与交互关联的事件,然后被应用程序的UIKit通过一个特殊的端口来分发。应用程序把事件放入队列,然后逐个分发到main run loop来执行。UIApplication对象是第一个对象接收事件,然后决定怎样处理它。一个touch event通常都被分发到main window对象,然后依次分发到发生触碰的view。其它event的接收事件对象路径可能有点不同。

大多数的事件通过使用main run loop 来分发,但是有些就不会。有些事件被发送到一个delegate对象或传递到你提供的block中。

应用程序的状态和多任务

有时系统会从APP一种状态切换到另一种状态响应系统发生的事件。例如,当用户按下Home键,电话打入或其他终端发生时,当前运行的应用程序会切换状态来响应。应用程序的状态有以下几种:

大多数发生状态转换时都会调用delegate对象对应的方法响应APP的状态改变。下面汇总了delegate对象的所有方法,当APP状态发生转换时,你可能会使用到它们

上一篇下一篇

猜你喜欢

热点阅读