当我使用 XCode 4.2 创建新项目(例如,单视图 iOS 应用程序)时,“支持文件”文件夹中的 main.m 文件如下所示:
#import <UIKit/UIKit.h>
#import "iiiAppDelegate.h"
int main(int argc, char *argv[])
{
int retVal = 0;
@autoreleasepool {
retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([iiiAppDelegate class]));
}
return retVal;
}
编译器设置(在“构建设置”中)是 Apple 3.0 LLVM。当我将其更改为 GCC 4.2 或 GCC4.2 LLVM 时,它显示 main.m 错误。
没有@autoreleasepool
...
我的 Xcode 中的哪个设置会导致这样的麻烦?为什么新项目的标准编译器是Apple 3.0LLVM而不是系统默认编译器(GCC4.2)?
回答你的第一个问题:
我的 Xcode 中的哪个设置会导致这样的麻烦?
编译器本身就是设置。改成LLVM 3.0就不再有麻烦了
回答你的第二个问题:
为什么新项目的标准编译器是Apple 3.0LLVM而不是系统默认编译器(GCC4.2)?
LLVM 3.0ISXcode 4.2 的系统默认编译器。
我想你是什么actually询问的是如何修复不使用 LLVM 3.0 时的错误。为此,您需要替换@autoreleasepool
with NSAutoreleasePool
像这样:
int main(int argc, char *argv[]) {
int retVal = 0;
// @autoreleasepool {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([iiiAppDelegate class]));
[pool drain];
// }
return retVal;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)