隨着ARC的曙光在xcode中出現了一個新的主要函數模板,這使得更有意義。但是,我對舊模板有疑問。爲什麼這樣的可可觸摸主要功能模板?
殊不知,在XCode中可可觸摸應用舊的主函數模板是這樣的:
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
不過,最後兩行是不可訪問,因爲文件明確指出,UIApplicationMain不會返回。它只是在完成時調用exit()。那麼爲什麼蘋果選擇這樣的模板呢?爲什麼不是這個?
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
return UIApplicationMain(argc, argv, nil, nil);
}
這是因爲人們會以此爲例,而不是正確地釋放他們的autorelease池嗎?或者因爲它會使靜態分析儀發生故障?或者其他可能?
這個問題可能太開放了,所以我會以另一種方式提出。按照Apple的方式使用該模板是否存在技術原因?
只是一個想法:當你說「UIApplicationMain永遠不會返回[值]」,你是不是自相矛盾,你建議返回UIApplicationMain,即使主函數需要返回一個int值? – pasawaya 2012-07-26 06:01:09