我编写了这个简单的代码来试用NSArrays 的新Objective-C文字语法:
NSArray *array = @[@"foo"];
NSLog(@"%@", array[0]);
Run Code Online (Sandbox Code Playgroud)
第一行工作正常,但下标导致错误:
读取在'NSArray*'类型的对象上找不到的数组元素的预期方法
只是想知道我是否做错了什么,或者文字还没有完全实现.我正在使用Apple LLVM 4.0编译并使用iOS 5 SDK.
这里也是错误的屏幕截图.

cocoa compiler-errors objective-c nsarray objective-c-literals
我阅读了所有关于新的Objective-C文字,并使用Xcode转换我的旧代码,但索引代码没有改变.我手动改变它,但它不会编译.我看到一篇帖子说我们要等到iOS 6,但我现在要索引!
有什么解决方案吗?
使用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没有,我可以做些什么来解决这个问题?