IOS Application应用程序核心架构

  一个新建的IOS application程序主要由以下文件组成:

  main.m

  *appDelegate.h/.m

  MainWindow.xib

  *info.plist

  IOS应用程序由UIKit封装,一个Application应用main函数标准实现如下:

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

  其中NSAutoreleasePool做内存自动释放,autorelease暂缓释放操作。

  核心为UIApplicationMain()函数,UIKit封装初始化工作,装载应用程序的用户界面和开始事件循环。它第3、第4个参数接收NSString*类型参数,用来指定类名。

  第3个参数指定:UIApplication类,如果首要类字符串的值为nil, UIKit就缺省使用UIApplication类;如果不为空,应用程序就使用指定的UIApplication类的定制子类(这种做法是不推荐的,但确实是可能的)。

  第4个参数指定:AppDelegate,如果应用程序委托类为nil,UIKit就会将应用程序主nib文件(针对通过Xcode模板创建的应用程序)中的某个对象假定为应用程序的委托对象。

UIApplication和AppDelegate

  UIApplication是app应用程序的核心,它负责事件的处理逻辑,把应用程序相关的比如:触屏处理这些事件分发到对应的FirstResponder,把相关操作通过AppDelegate向下通知出来。UIApplication是任何应用程序适用的处理核心,它通过AppDelegate让不同的程序产生不同的动作、行为。

主nib文件

  默认是MainWindow.xib,由*info.plist中NSMainNibFile指定。如果应用程序的信息属性列表(Info.plist)文件中含有NSMainNibFile键,则作为初始化过程的一个部分,UIApplication对象会装载该键指定的nib文件。主nib文件是唯一一个自动装载的nib文件,其它的nib文件可以在稍后根据需要进行装载。

  iPhone应用程序的主nib文件通常包含一个窗口对象和一个应用程序委托对象,还可能包含一个或多个管理窗口的其它重要对象。装载一个nib文件会使该文件中的对象被重新构造,从而将每个对象的磁盘表示转化为应用程序可以操作的内存对象。从nib文件中装载的对象和通过编程方式创建的对象之间没有区别。然而,对于用户界面而言,以图形的方式(使用Interface Builder程序)创建与用户界面相关联的对象并将它们存储在nib文件中通常比以编程的方式进行创建更加方便。

标准ViewBase工程的程序启动基本流程

  程序入口main中调用UIApplicationMain(),3、4位参数为默认参数,使用默认的UIApplication类,使用NIB中指定的AppDelegate类并set到UIApplication。载入NIB文件,构造AppDelegate,创建Window窗口、创建UIViewController。应用程序框架就启动完成了,UIApplication对事件逻辑处理分发,应用程序就在事件循环中正常执行了。


你可能感兴趣的:(ios,编程,xcode,application,iPhone,interface)