background image

C 程序一样这个是程序入口。代码如下:

int main(int argc, char *argv[]) {

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    int retVal = UIApplicationMain(argc, argv, nil, nil);

    [pool release];

    return retVal;

}

    在 main 函数中第二行代码 UI Application Main(argc, argv, nil, nil);对 UIApplication 对象进
行了初始化,这个方法除了

argc 和 argv 参数外,另外这个函数还有 2 个两个字符串参数来

识别

UI Application 类和 UI Application 代理类,在这里默认是 2 个 nil,第一个参数为 nil 就

默认把

UI Application 类作为缺省值进行初始化,可以在这里不填 nil 而是使用自己定义的

UI Application 子类。至于第二个参数 nil 就设置为 nil 就把模板生成的 Hello World 
Appdelegate 类作为默认值。这里有了 UI Application 对象怎么又出来一个 UI Application 代
理类对象呢?这里需要说明

UI Application 对象说是管理整个程序的生命周期其实它是什么

具体的事情都不干,它只负责监听事件当需要做实际工作的时候就交给

UI Application 代理

类去做,

UI Application 相当于传令官负责只把命令传达给 UI Application 代理类这个士兵,

然后由这个士兵真正去冲锋陷阵

,所以需要给 UI Application 对象设置代理类。

    非常不好意思写了一堆罗嗦的文字还没有进入正题,不过这些罗嗦还是非常有必要的,
现在开始编写我们的第一个

iPhone 程序 helloWorld。 上面不是说了要忘记代码模板,忘记

xib 忘记 Interfcae Builder 嘛,这样我们把模板自动生成的部分删除了,找到 Other Sources
文件下

main.m 删除,找到 Classes 文件夹下的 Hello World Appdelegate.h 和 Hello World 

Appdelegate.m 删除,把 Resources 文件夹下的 Main Window.xib 删除,还有一件事情一定要
做那就是打开

Resources 文件夹下 Hello World-info.plist,然后找到 key 为“Main nib file base 

name”删除因为在上面我们已经删除了 Main Window.xib,这样就完成的工程的清理,变成
了一个真正的空的工程没有什么实现代码。

    完成上面的清理工作后,接下来开着我们的编写,首先新建程序入口 main.m 文件已经
main 方法,程序从这里开始!代码如下:

int main(int argc, char *argv[]) {

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    int retVal = UIApplicationMain(argc, argv, nil, @”SampleDelegate”);

    [pool release];

    return retVal;

}

    NSAutoreleasePool 内存自动释放池这个干什么我就不说了,你懂得的。这里主要看一下
第二行

UI Application Main(argc, argv, nil, nil);与模板生成的相比改成 UI Application 

Main(argc, argv, nil, @”SampleDelegate”);这样做我们为 UI Application 对象设置了名为
SampleDelegate 代理类,上面不是说了 UI Application 是不处理具体事情的,真正做事的是
UI Application 代理类,这个名为 SampleDelegate 代理类就是我们需要具体写代码实现的,