iPhone应用程序委托

移动开发 iOS
本文主要说明应用程序层的事件委托与应用程序生命周期。为了说明应用程序,从main开始。先来看详细内容。

iPhone应用程序委托是本文要介绍的内容,iPhone的软件栈有好几层组成,而应用程序是位于栈里面***的抽象层,系统核心服务(操作系统层)则是位于***层的。

这中间还有媒体层、Cocoa Touch层、核心服务层等等 ,但一般在开发应用程序的过程中,与我们主要打交道的是GUI框架和Cocoa Touch层所提供的面向对象抽象。Cocoa的Foundation框架包含了基础数据类、基础工具类等主要部分,几乎所有的Cocoa类都是从一个根 类对象NSObject继承来的。为了说明应用程序,从main开始。

  1. int main(int argc,char *argv[]}{  
  2.            NSAutoreleasePool *pool  = [[NSAutoreleasePool alloc] init];  
  3.            int retVal = UIApplicationMain(argc,argv,nil,nil);  
  4.            [pool release];  
  5.            return retVal;  

这是 一个典型的C风格主函数,其功能核心部分在于调用了UIApplicationMain函数来启动事件循环并开始运行应用程序,注意主函数的第三个以及第 四个参数,这两个参数指明了应用程序的主类和应用程序委托。而这个委托就是一个处理应用程序生命周期管理事件的类。如果指定是nil,则被告知需要从一个 nib文件来装入这些类对象。在Info.plist文件中,指定了一个nib文件,默认情况下是MainWindow.xib,接下来的事情就是 UIkit在xib文件中寻找应用的委托了。
     
在该 nib文件(用IB打开)中,可以看到有几个图标,其中有一个图标是应用程序委托的图标。其它的好像是视图控制器图标以及一个窗口图标。 另外有File's Owner (拥有当前nib文件的对象)以及First Responser(指示该组件能够***个接收用户的输入)两个图标。
那么应用程序是如何将该委托对象与应用程序相连的呢?

iPhone应用程序都有一个窗口对象,应用程序委托中有两个连接,一个连接到该nib文件的窗口对象,一个连接到该nib文件的视图控制器上。一般我们可以通过定制视图控制器的行为来控制我们的显示。

整个过程就是这样的了。系统先调用main函数,然后main函数调用UIAplicationMain函数,这个函数利用Info.plist文件来寻 找应用程序的主nib文件,在该文件中找到应用程序的一个委托,这个委托又有两个连接,可以接连到一个窗口和视图控制器。然后这个视图控制器又可以定制我 们的显示行为(可以用代码定制也可以用nib文件定制),这就是启动应用程序的整个过程。

接下来,委托可以做什么呢?

应用程序的生命周期由生命周期方法控制,这些生命周期方法与应用委托相关的,当然,也是与由它装入的视图控制器相关的。比如,应用程序刚刚启动完毕,调用委托的applicationDidFinishLaunching:方法。
为什么需要委托呢?

一个 简单的想法是,一个对象能够有一个单一的委托对象,可以在某些事件发生的时候来调用该委托对象的事件方法。委托对象就像一个职业能手一样,它总是说:没 事,当这个事件发生的时候,你告诉我就好了。而另一个接收事件的对象则有很多其它的业务事情需要处理:我实在没时间处理这些事情,我也不知道我应该要做什 么,所以我交给你吧。

委托对象由UIApplicationDelegate所定义,因此对于一个类,如果想成为应用程序的委托,一定需要在头文件中声明它实现这个协议,然后在类的实现中,实现所有的必须方法。

小结:iPhone应用程序委托的内容介绍完了,希望本文对你有所帮助。更多相关iphone的内容请参考编辑推荐。

转载网址:http://hi.baidu.com/zmxiangde_88/blog/item/0b21b6860148ccb26d811945.html

责任编辑:zhaolei 来源: 博客园
相关推荐

2011-08-12 14:54:45

iPhone委托

2011-07-26 09:41:23

iPhone xcode Mac OS X

2010-08-27 10:41:41

iPhone核心应用程序

2011-07-20 15:58:58

iPhone 应用程序 生命周期

2011-07-27 17:30:40

iPhone Locate 定位

2011-07-19 14:36:32

iPhone

2011-08-05 13:49:53

iPhone 应用 开发

2011-07-21 15:56:32

iPhone 截屏

2011-07-26 11:13:15

iPhone PXL

2011-07-19 10:42:41

iPhone 应用程序 模型

2012-05-24 15:49:35

HTML5

2011-08-10 09:31:33

开发iPhone应用程

2011-07-19 11:12:07

iPhone 控制器

2011-07-26 16:33:56

iPhone Delegate

2011-07-28 13:59:40

iPhone App

2010-09-10 09:50:33

iPhone软件iPhone

2011-07-19 10:56:15

iPhone 控制器 视图

2011-08-10 16:50:10

iPhone生命周期

2011-08-05 14:58:58

iPhone CoreAnimat 动画

2011-08-17 16:16:29

iPhone应用程序启动过程
点赞
收藏

51CTO技术栈公众号