NSArray&NSDictionary的Subscripting下标运算符那些事

obj-c.gif

前言

从OC3.1开始引入了类似C语言中array通过下标运算符访问数组元素的特性,同时字典也可以通过Key访问对应的元素

常用的访问数组和字典元素的方式

NSString *str = [array objectAtIndex:0];
NSString *name = [dict objectForKey:@"name"];

上面通过数组和字典的Method来访问其中元素的方法是没问题的,甚至说是我们Coding时的最佳实践.
但是,程序员是一群充满创造力的群里,为了偷懒绝对可以脑洞大开,所以有没有更加Clean Code的方法来达到同样的目的呢?
答案当然是: 有,而且你一定见过

这里,说一句题外话,Swift也在其evolution演进过程中,给这门新语言也赋予了下标访问的能力,看来这门技术都成了编程语言的标配了😛

Clean Code 下标访问

NSString *str = array[0];
NSString *name = dict[@"name"];

为什么能这么干

原理其实就是,APPLE给NSArray实现了下标运算符,让其等价于调用下面的方法,同理适用于NSDictionary

(id)objectAtIndexedSubscript:(NSUInteger)idx;
(void)setObject:(id)obj atIndexedSubscript:(NSUInteger)idx;

我们开发者能干些什么

如果,我是说如果,我们对于自定义的类也需要实现下标访问元素的功能,那么我们就可以通过声明和实现上述两个方法就可以给我们自己的类赋予这样的能力.

除了NSArray,NSDictionary,APPLE的SDK中大量引入了这种技术,比如PhotoKit中获取的照片集合类PHFetchResult:

image.png

结语

今天文章的内容很少,是自己在开发中的所思所想,记录下来,越来越觉得一个语言的演进过程是非常有意思的过程,有精力的同学可以关注Swift的swift-evolution

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简介 这是一个Swift语言教程,基于最新的iOS 9,Xcode 7.3和Swift 2.2,会为你介绍Swif...
    张嘉夫阅读 3,312评论 0 50
  • 醉了!醉了! 思念醉了! 人也溃了! 想起今天,眉目还是不由得紧锁! 任性是林间的鸟儿, 总会在不经意啼鸣出来! ...
    城北有人撞南墙丶阅读 172评论 0 1
  • 阿幺姑娘既善良又勇敢,却是个可怜的孩子。在她很小时,父母就不幸去世了。直到刚刚,连一把屎一把尿把她拉扯大的外...
    想想也是阅读 860评论 7 7
  • “哥,你说茶叶蛋会有爱情吗?” “你丫的也至于,你不就失个恋吗” “可这跟茶叶蛋一样,吃了就没了啊” “给,哥今天...
    独自取经的沙僧阅读 643评论 4 9
  • 1.不要让安全感限制了你的人生 (1)房子和梦想。年轻的时候,少量的资金是用来投资自己还是投资房产。 (2)职业安...
    丠小龙阅读 295评论 1 3