Objective-C文字语法中的未装箱BOOL给出错误

Jos*_*rey 5 objective-c xcode4 objective-c-literals

我只是在尝试作为Xcode 4.4的一部分引入的新的Objective-C文字语法.

字典,整数和数组都运行良好,但我一直遇到一个问题BOOL.例如:

NSDictionary *myDict = @{
    @"foo": @"bar",
    @"test": @YES
};
Run Code Online (Sandbox Code Playgroud)

给我"意外的类型名称'BOOL':预期的表达式"在布尔线的行上.

然而@(YES),@1,@true一切工作正常.

本文:http://clang.llvm.org/docs/ObjectiveCLiterals.html建议@YES应该有效.

我也尝试过它自己的行:NSNumber *myNum = @YES;并得到同样的错误.

错误?

Cyr*_*lle 3

这不是一个错误,而是因为苹果目前确实这样做

#define YES (BOOL)1
#define NO  (BOOL)0
Run Code Online (Sandbox Code Playgroud)

代替

#define YES ((BOOL)1)
#define NO  ((BOOL)0)
Run Code Online (Sandbox Code Playgroud)

这是在最新的 SDK 中修复的。

  • 实际上,“bool”在新的 SDK 中拥有自己的类型:_objc_bool。 (2认同)