我刚刚意识到我可以使用NSDictionary
和dict [key]访问objectForKey:
?
NSDictionary *coordsDict = @{@"xpos": @5.0, @"ypos": @7.2, @"zpos": @15.7};
NSLog(@"XPOS: %@", coordsDict[@"xpos"]);
NSLog(@"XPOS: %@", [coordsDict objectForKey:@"xpos"]);
有人能告诉我这是否一直向我隐瞒,或者是否有一些最新的语言变化?
编辑:这个问题一般不会引用新的字符串文字,更具体地说是使用与NSArray相同的字符串文字语法来访问NSDictionary。我显然忽略了这一点,只是想检查这个特定语法的添加时间。
答案 0 :(得分:13)
这是Xcode 4.4+的新增功能,依赖于Apple的LLVM + Clang编译器。这是一个新功能:)也可以使用相同的表示法访问数组:myObjectArray[4]
。
如果您有兴趣将这个新功能添加到您自己的类(称为下标),可以使用以下几种方法:
@interface NSArray(Subscripting)
- (id)objectAtIndexedSubscript:(NSUInteger)index;
@end
@interface NSMutableArray(Subscripting)
- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)index;
@end
@interface NSDictionary(Subscripting)
- (id)objectForKeyedSubscript:(id)key;
@end
@interface NSMutableDictionary(Subscripting)
- (void)setObject:(id)obj forKeyedSubscript:(id <NSCopying>)key;
@end
如果您在自己的类上实现任何这些方法,则可以对其进行下标。这也是您可以将此功能添加到OS X 10.7的方法!
答案 1 :(得分:0)
请参阅iOS 6中介绍的“Modern Objective-C”。
请参阅WWDC 2012视频:Migrating to Modern Objective-C。
所以,不,这个功能并不是新的,你忽略了它......; - )