使用XCode 4.4转换为现代目标C语法,我的[NSNumber numberWithBool:YES]
次调用已转换为@(YES)
。我有一些我现在已经忘记的问题,并将自己更改为@YES
,这应该是正确的语法。
然而,这样做会给我一个错误:
意外类型名称'BOOL':预期表达式
我知道有一种“表达式”语法,但我不明白为什么我不能简单地使用@YES
和@NO
。
// Compiler error:
NSDictionary *userDefaultsDefaults = @{@"hasBeenLaunched": @YES};
// No error
NSDictionary *userDefaultsDefaults = @{@"hasBeenLaunched": @(YES)};
为什么@(YES)
编译而@YES
没有,我可以采取哪些措施来解决这个问题?
答案 0 :(得分:10)
简短回答:
使用@(YES)
和@(NO)
更长的答案:
看看this answer,它解释说这主要是对Apple的疏忽。
this answer上的评论者也指出:
我想提醒一件小事。文字bool也不受支持 因为这。但是,我实施的快速修复是添加 这是我的一个常见标题的开头(在iOS项目中)
#ifndef __IPHONE_6_0
#if __has_feature(objc_bool)
#undef YES
#undef NO
#define YES __objc_yes
#define NO __objc_no
#endif
#endif