您的位置:首页 > 移动开发 > Objective-C

如何在Xcode4.4中使用Objective-C的对象下标表示法

2013-07-16 12:37 246 查看
Xcode4.4引入了LLVM 4.0编译器,该编译器为Objective-C提供了一些增强特性,下标表示法就是其中之一。大大简化了容器变量的使用,同时又很好地增强了可读性。让我们看一看下面这段代码:
NSArray * array = @[@"a", @"b", @"c"];
NSLog(@"%@", [array objectAtIndex:0]);
NSLog(@"%@", array[0]);


第一句代码,是另一个新的特性—字面量表示法,数组对象以后可以使用这种方式直接构建。

第二句和第三句代码等价,第三句代码就使用了下标表示法,这样看是不是比原来的写法简单多了。

这里要特别提一下,如果你开发的是MacOS的应用,那么下标表示法可以直接使用了。但是如果你开发的是iOS,那么很不幸,在Xcode4.4中还不能为开发iOS的应用,直接使用下标表示法。原因在于,iOS的SDK还没有像MacOS的SDK那样完整实现了所有新特性。不过,我们可以通过添加一个Category的方式来获取下标表示法的能力。代码如下:
@interface NSObject(subscripts)

- (id)objectAtIndexedSubscript:(NSUInteger)idx;
- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)idx;
- (void)setObject:(id)obj forKeyedSubscript:(id <NSCopying>)key;
- (id)objectForKeyedSubscript:(id)key;

@end


将这段代码封在NSObject+subscripts.h文件中,在需要使用下标表示法的文件中include即可。

警告:因为引入了这个头文件,所有的对象都自动获取了下标表示法的能力。但是并不是所有的对象都能正常运行下标表示法。一般情况下,容器类对象(如NSArray、NSDictionary等),可以正常运行。

以下代码可以正确执行。
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
dict[@"foo"] = @"bar";


不能正确执行。
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSLog(@"the value of key is %@", userDefaults[@"key"]);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐