2.2.2 資源
我們從下往上看Groups & Files窗格。找到“Resources”組,該組中存放的是非源碼文件,比如圖像和音頻文件。
Default.png文件是在iOS加載應(yīng)用程序時(shí)顯示的圖像,而Icon.png文件顧名思義就是應(yīng)用程序的圖標(biāo)。fps_images.png文件是cocos2d用來(lái)顯示幀率的,是不允許刪除或修改的。
Info.plist文件包含了一些與應(yīng)用程序相關(guān)的配置信息,只有要僅在即將發(fā)布應(yīng)用程序時(shí)才需要在這里作修改該文件。
2.2.3 其他資源
如果你熟悉用C或類似語(yǔ)言進(jìn)行編程,那么你應(yīng)該能認(rèn)出main.m文件,它是表示一個(gè)應(yīng)用程序的開(kāi)始。
1. main.m
所有發(fā)生在main函數(shù)和HelloWorldAppDelegate類之間的事情都是由iPhone SDK自行處理的,不受程序員控制。因?yàn)閹缀醪挥脤?duì)main.m作修改,所以可以放心跳過(guò)這里的內(nèi)容。當(dāng)然,多學(xué)一點(diǎn)知識(shí)也是無(wú)妨的。
簡(jiǎn)單來(lái)說(shuō),main函數(shù)創(chuàng)建了NSAutoreleasePool,并之后調(diào)用了UIApplicationMain來(lái)啟動(dòng)應(yīng)用程序。其中,HelloWorldAppDelegate用作實(shí)現(xiàn)UIApplicationDelegate協(xié)議的類。
int main(int argc, char *argv[]) {
NSAutoreleasePool *pool = [NSAutoreleasePool new];
int retVal = UIApplicationMain(argc, argv, nil, @"HelloWorldAppDelegate");
[pool release];
return retVal;
}
實(shí)際上,每個(gè)iOS應(yīng)用程序都使用NSAutoreleasePool來(lái)幫助你管理內(nèi)存。簡(jiǎn)單來(lái)說(shuō),通過(guò)對(duì)向對(duì)象發(fā)送自動(dòng)釋放消息,你就不必再為何時(shí)向它們發(fā)送釋放消息而煩惱了。自動(dòng)釋放池保證所有被自動(dòng)釋放的對(duì)象最終都會(huì)從內(nèi)存中釋放。
如果你不明白我在說(shuō)些什么也沒(méi)有關(guān)系,稍后我會(huì)在本章中介紹cocos2d中的內(nèi)存管理機(jī)制,到時(shí)候你就會(huì)清楚為什么每個(gè)iOS應(yīng)用程序都要采用被封裝到一個(gè)NSAutoreleasepool中了了。
2. 預(yù)編譯前綴頭文件
HelloWorld_prefix.pch是一個(gè)用于加快編譯速度的工具。只有永遠(yuǎn)不會(huì)變化或很少發(fā)生變化的頭文件才能被添加到前綴頭文件中。這樣做可以使框架的代碼提前被編譯,并對(duì)所有類可見(jiàn)。不幸但是,如果添加到前綴頭文件中的頭文件發(fā)生了變化,那么所有代碼會(huì)被重新編譯,這也是為什么只能向前綴頭文件中添加不變的頭文件的原因。
正如代碼清單2-1中所寫(xiě)示,cocos2d.h頭文件是非常適合被添加到前綴頭文件中的,因?yàn)樗鼛缀醪粫?huì)改變。當(dāng)項(xiàng)目比較復(fù)雜時(shí),編譯速度會(huì)有比較顯著的提升(當(dāng)然,也不必拿出秒表來(lái)測(cè)量)。但是,一開(kāi)始就把“將cocos2d.h”添加到前綴頭文件中是一個(gè)非常好的習(xí)慣,這樣在其他源文件中就不必再寫(xiě)語(yǔ)句#import "cocos2d.h"了。
代碼清單2-1 在前綴頭文件中加入cocos2d.
#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "cocos2d.h"
#endif
同樣,欲知更多前綴頭文件以及編譯優(yōu)化的相關(guān)內(nèi)容,請(qǐng)參考蘋(píng)果公司官方的開(kāi)發(fā)者文檔http://developer.apple.com/mac/library/documentation/DeveloperTools/Conceptual/Xcode- BuildSystem/800-Reducing_Build_Times/bs_speed_up_build.html。