2.2.2 资源
我们从下往上看Groups & Files窗格。找到“Resources”组,该组中存放的是非源码文件,比如图像和音频文件。
Default.png文件是在iOS加载应用程序时显示的图像,而Icon.png文件顾名思义就是应用程序的图标。fps_images.png文件是cocos2d用来显示帧率的,是不允许删除或修改的。
Info.plist文件包含了一些与应用程序相关的配置信息,只有要仅在即将发布应用程序时才需要在这里作修改该文件。
2.2.3 其他资源
如果你熟悉用C或类似语言进行编程,那么你应该能认出main.m文件,它是表示一个应用程序的开始。
1. main.m
所有发生在main函数和HelloWorldAppDelegate类之间的事情都是由iPhone SDK自行处理的,不受程序员控制。因为几乎不用对main.m作修改,所以可以放心跳过这里的内容。当然,多学一点知识也是无妨的。
简单来说,main函数创建了NSAutoreleasePool,并之后调用了UIApplicationMain来启动应用程序。其中,HelloWorldAppDelegate用作实现UIApplicationDelegate协议的类。
int main(int argc, char *argv[]) {
NSAutoreleasePool *pool = [NSAutoreleasePool new];
int retVal = UIApplicationMain(argc, argv, nil, @"HelloWorldAppDelegate");
[pool release];
return retVal;
}
实际上,每个iOS应用程序都使用NSAutoreleasePool来帮助你管理内存。简单来说,通过对向对象发送自动释放消息,你就不必再为何时向它们发送释放消息而烦恼了。自动释放池保证所有被自动释放的对象最终都会从内存中释放。
如果你不明白我在说些什么也没有关系,稍后我会在本章中介绍cocos2d中的内存管理机制,到时候你就会清楚为什么每个iOS应用程序都要采用被封装到一个NSAutoreleasepool中了了。
2. 预编译前缀头文件
HelloWorld_prefix.pch是一个用于加快编译速度的工具。只有永远不会变化或很少发生变化的头文件才能被添加到前缀头文件中。这样做可以使框架的代码提前被编译,并对所有类可见。不幸但是,如果添加到前缀头文件中的头文件发生了变化,那么所有代码会被重新编译,这也是为什么只能向前缀头文件中添加不变的头文件的原因。
正如代码清单2-1中所写示,cocos2d.h头文件是非常适合被添加到前缀头文件中的,因为它几乎不会改变。当项目比较复杂时,编译速度会有比较显著的提升(当然,也不必拿出秒表来测量)。但是,一开始就把“将cocos2d.h”添加到前缀头文件中是一个非常好的习惯,这样在其他源文件中就不必再写语句#import "cocos2d.h"了。
代码清单2-1 在前缀头文件中加入cocos2d.
#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "cocos2d.h"
#endif
同样,欲知更多前缀头文件以及编译优化的相关内容,请参考苹果公司官方的开发者文档http://developer.apple.com/mac/library/documentation/DeveloperTools/Conceptual/Xcode- BuildSystem/800-Reducing_Build_Times/bs_speed_up_build.html。