Literal @YES不适用于iOS 5 / Xcode 4.4
新的Xcode 4.4已经出来,它应该支持像
@42
@"String"
@23.0L
@{ @"key" : obj }
和
@[obj1, obj2]
它也应该支持@YES
和@NO
,这在目标最新的iOS 5(和之前版本)时不起作用。 编译后显示错误信息:
意外的types名称'BOOL':预期的expression式
我知道你可以通过input@(YES)
和@(NO)
来修复它。 但是我想知道它不能按预期工作的原因。
原因是苹果在这里忘了括号:
#define YES (BOOL)1
这将在iOS 6 SDK中修复:
#define YES ((BOOL)1)
在此期间,您必须input@(YES)
。
这对于文字信息很有用。
这个答复的评论者也指出:
我想警告一件小事。 文字布尔也不支持,因为这一点。 但是,我实现的一个快速解决scheme是将其添加到我的一个常见标题的开头(在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之后完成。 如果将这些#define放在它们的Prefix.pch中,他们应该确保在pch中早些时候导入Foundation