现在的位置: 首页 > 综合 > 正文

IOS编程基础 — 事件驱动、程序状态

2012年07月12日 ⁄ 综合 ⁄ 共 1035字 ⁄ 字号 评论关闭
。事件驱动
iOS编程是基于事件驱动的。我们所要做的事情就是写代码响应相应的事件。
 
每当用户操作应用程序时,设备就会产生事件。例如当用户点击一个按钮时,设备就会产生一个相应的“触击”事件并发送给应用程序。事件不仅仅来自用户的直接交互,像来电、电量不足、文件下载完成等也会产生事件。实际上在IOS设备上发生的任何事情最终都会产生一个或多个事件。当一个事件产生时, 操作系统会检查你的程序,看看是否某个类中的某个方法应该被通知。
 
iOS编程的关键是知道有些什么事件?以及怎样设置我们的方法,以便当这些事件发生时,让相应的方法被调用?
 
理解程序的生命周期是很关键的。下图简单显示了一个程序从启动到结束的事件流:

在程序生命周期的关键点,消息被发送给应用程序中的对象,以便让这些对象知道发生了什么事情。当用户按了Home键时,IOS上的程序实际上并没有真正结束,而是进入了后台挂起状态。

。程序状态
我们程序的核心是main函数。当我们基于相应的模板创建工程时,Xcode会自动帮我创建该函数,通常我们都不需要做任何更改。那么它的作用是什么呢?
它的作用是作为应用程序的入口,在进入这个入口后把控制权转交给UIkit framework中的一个类。

每个iOS应用程序都必须有一个类实现了UIApplicationDelegate协议。这个类就是应用程序代理对象,它负责监控应用程序的高层行为。应用程序代理对象必须实现一些UIApplicationDelegate协议中的关键方法,这些方法是用来处理一些关键事件的。

在面向对象方法学中 ,代理是一个实现了一些方法的对象,这些方法被另一个对象按需调用。
iOS所有程序状态如下:

未运行 应用程序当前未启动
未激活

应用程序在运行,但不接收任何事件。当一个应用程序正要从一个状态转换到另一个状态时,就处于未激活状态,处于这个状态的时间

是很短的。应用程序保持未激活状态一段时间的情况只有在系统提示用户对某些事件,例如来电、新信息进行相应反应时。

激活 程序正在运行并接收事件
后天 应用程序在后天运行。通常不直接和用户交互。
挂起 不执行任何代码,处于等待状态。

 

 

 

 

 

 

在启动时,一个程序从未运行状态装换到激活或后台状态。

应用程序代理协议的方法调用顺序如下:
didFinishLaunchingWithOptions
applicationDidBecomeActive
applicationDidEnterBackground
xcode通常会提供这些方法的默认实现。

抱歉!评论已关闭.