我有一个使用 ARC 的 iOS 项目,我收到了一个与我创建应用程序的@autoreleasepool 的方式相关的错误。
在 main.m 中,我有一小段代码:
#import <UIKit/UIKit.h>
int main(int argc, char *argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, @"MyAppDelegate");
}
}
我收到错误信息:
错误:“@”标记前的预期表达式
但是,如果我恢复到创建自动释放池的旧方式:
#import <UIKit/UIKit.h>
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
我在 IDE 中收到与 ARC 相关的各种错误:
- NSAutoreleasePool不可用:在自动引用计数模式下不可用
- ARC 禁止发送“release”的显式消息
然而,当我尝试构建时,它构建成功。
冲突在哪里?
如何让它使用创建自动释放池的新样式?
最佳答案
确保您设置为使用 Clang 编译器 (Apple LLVM) 而不是 GCC:
然后像这样写你的main.m:
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
关于objective-c - @autoreleasepool 在@token 之前期望表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13708601/