新的Xcode 4.4已经发布,它应该支持之类的文字
@42
@"String"
@23.0L
@{ @"key" : obj }
和@[obj1, obj2]
它还应该支持@YES
和@NO
,这在针对最新的iOS 5(及以前版本)时不起作用。编译后显示错误消息:
意外的类型名称"BOOL":应为表达式
我知道你可以通过键入@(YES)
和@(NO)
来修复它。但我想知道它没有按预期工作的原因。
原因是苹果忘记了这里的括号:
#define YES (BOOL)1
这将在iOS 6 SDK中修复:
#define YES ((BOOL)1)
在此期间,您必须键入@(YES)
。
这对于有关文字的信息很有用。
对此答案的一位评论者也指出:
有一件小事我想提醒一下。也不支持文本布尔正因为如此。然而,我实现的一个快速解决方案是添加这是我的一个常见标题(在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的答案似乎更切中要害。你应该接受这一点。
这是值得添加的评论:
需要注意的是,这需要在#导入之后完成。如果将这些#定义放在它们的Prefix.pch中,它们应该确保在pch 中更早地导入Foundation