aka*_*aru 5 compiler-errors objective-c objective-c-literals
使用XCode 4.4的转换为现代目标C语法,我的[NSNumber numberWithBool:YES]调用被转换为@(YES).我有一些问题,我现在已经忘记了,并将自己更改为@YES,这应该是正确的语法.
但是,这样做会给我一个错误:
意外的类型名称'BOOL':预期的表达式
我知道有一个"表达式"语法,但我不明白为什么我不能简单地使用@YES和@NO.
// Compiler error:
NSDictionary *userDefaultsDefaults = @{@"hasBeenLaunched": @YES};
// No error
NSDictionary *userDefaultsDefaults = @{@"hasBeenLaunched": @(YES)};
Run Code Online (Sandbox Code Playgroud)
为什么@(YES)编译时@YES没有,我可以做些什么来解决这个问题?
Jam*_*ter 10
简短回答:
使用@(YES)和@(NO)
更长的回答:
这个答案的评论者也指出:
我想提醒一件小事.因此,也不支持文字布尔.但是,我实现的快速修复是将其添加到我的一个常见标题的开头(在iOS项目中)
#ifndef __IPHONE_6_0
#if __has_feature(objc_bool)
#undef YES
#undef NO
#define YES __objc_yes
#define NO __objc_no
#endif
#endif
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3191 次 |
| 最近记录: |