一、main函数介绍
如果你熟悉 C 或类似的编程语言,你可能在“Other Sources”中认出应用程序 的起始程序 main.m。
Main.m 任何在主函数和HelloWorldAppDelegate类之间做的处理,属于iPhone SDK的后台魔法,你没有控制的权限。因为你几乎不需要改变main.m,所以你可以忽略 它。不过,看一看也无妨。
简单点说,主函数创建了一个NSAutoreleasePool(自动释放池),然后调用 UIApplicationMain启动程序,程序使用HelloWorldAppDelegate类来执行 UIApplicationDelegate的协议(protocol)。
int main(int argc, char *argv[]) {
NSAutoreleasePool *pool = [NSAutoreleasePool new];
int retVal = UIApplicationMain(argc, argv, nil, @"HelloWorldAppDelegate");
[pool release];
return retVal;
}
上述代码中使用了一个NSAutoreleasePool来帮助你管理内存。说的简单一点就 是通过使用autorelease(自动释放)信息,你不再需要担心忘记发送释放信息。 Autorelease pool(自动释放池)可以确保内存中的自动释放对象最终会被释 放。
二、预编译前缀头文件
“HelloWorld_prefix.pch”头文件的作用是给编译过程加速。你应该把不常变 化的框架(Frameworks)头文件添加到前缀头文件(prefix header)中。这样 的话,在编译的时候,框架的代码会被预先编译,所有的类都将可以使用这些 头文件。不幸的是,这样做也有一个缺点:如果前缀头文件里其中一个头文件 发生了变化,你的所有代码将会重新编译。这就是为什么你应该只添加那些极 少或者从来都不变化的头文件到前缀头文件中。
例如,就像我在列表2-1中所做的那样,cocos2d.h头文件可以被添加到前缀头 文件中,因为它很少改变。不过,只有复杂一些的项目才会感受到编译速度的
变化。不过,即使只为了不再需要在其他源代码里写 #import “cocos2d.h”, 也是值得一开始就在前缀头文件里写进 cocos2d.h 的。
列表2-1:把cocos2d.h头文件加到前缀头文件中
#ifdef __OBJC__
#import <Foundation/Foundation.h> #import <UIKit/UIKit.h> #import "cocos2d.h"
#endif
如果你想了解更多关于如何使用前缀头文件减少编译时间的知识,可以参考苹
果开发者文档:
http://developer.apple.com/mac/library/documentation/DeveloperTools/Conceptual/XcodeBuildSystem/800-Reducing_Build_Times/bs_speed_up_build.html