9 objective-c llvm literals ios llvm-4.0
新的Xcode 4.4已经出来了它应该支持像这样的文字
@42
@"String"
@23.0L
@{ @"key" : obj } 和
@[obj1, obj2]
它也应该支持@YES和@NO,针对最新的iOS时不工作5(和之前).编译后显示错误消息:
意外的类型名称'BOOL':预期的表达式
我知道你可以通过输入@(YES)和修复它@(NO).但我想知道为什么它没有按预期工作的原因.
Fel*_*lix 24
原因是Apple在这里忘记了括号:
#define YES (BOOL)1
Run Code Online (Sandbox Code Playgroud)
这将在iOS 6 SDK中修复:
#define YES ((BOOL)1)
Run Code Online (Sandbox Code Playgroud)
在此期间,您必须输入@(YES).
这对于有关文字的信息很有用.
这个答案的评论者也指出:
我想提醒一件小事.因此,也不支持文字布尔.但是,我实现的快速修复是将其添加到我的一个常见标题的开头(在iOS项目中)
Run Code Online (Sandbox Code Playgroud)#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