新的Xcode 4.4已经出局,它应该支持像
这样的文字 @42
@"String"
@23.0L
@{ @"key" : obj }
和
@[obj1, obj2]
它还应该支持@YES
和@NO
,这在定位最新的iOS 5(及之前版本)时无效。
编译后显示错误消息:
意外类型名称'BOOL':预期表达式
我知道您可以通过输入@(YES)
和@(NO)
来解决问题。但是我想知道为什么它没有按预期工作的原因。
答案 0 :(得分:24)
原因是Apple忘记了括号:
#define YES (BOOL)1
这将在iOS 6 SDK中修复:
#define YES ((BOOL)1)
在此期间,您必须输入@(YES)
。
答案 1 :(得分:9)
This对于有关文字的信息非常有用。
this answer上的评论者也指出:
我想提醒一件小事。文字bool也不受支持 因为这。但是,我实施的快速修复是添加 这是我的一个常见标题的开头(在iOS项目中)
#ifndef __IPHONE_6_0 #if __has_feature(objc_bool) #undef YES #undef NO #define YES __objc_yes #define NO __objc_no #endif #endif
@ phix23s答案似乎更重要。你应该接受。
这值得在评论中添加:
应该注意,这需要在#import之后完成。如果将这些#defines放在他们的Prefix.pch中,他们应该确保先前在pch中导入Foundation