相信对Swift有一定了解的人都知道它的下标语法.这个语法让类具备了像字典或者数组那样,利用下标获取一些东西的能力.但是,很多开发者或许不知道,OC中早就在Xcode4的时代,就已经有了这个语法.
OC中的对象下标语法
正如数组和字典, OC中的下标也分为了索引和键位.
索引下标需要声明和实现这两个方法:
1 | - (id)objectAtIndexedSubscript:(NSUInteger)idx; |
键索引下标需要实现这两个方法:
1 | - (id)objectForKeyedSubscript:(id <NSCopying>)key; |
这么说还是有些抽象, 现在来具体看个例子:
具体代码
1 | @interface BlackBox : NSObject |
然后使用方法:
1 | BlackBox *blackBox = [BlackBox new]; |
使用场景
这个最好的感觉,就是封装细节.
现在比较火的路由,用这个方法去实现就比较好,例如:1
2
3routes[@"black module://rootController:23"] = ^(id param){
//逻辑代码
}
和方法的对比
然后这个用方法来实现,也是okay的啊,为啥要用这个下标呢? 个人感觉,本身,我们编程工作,很大一部分的内容就是命名.而这个命名也是很容易出问题的地方.而下标的方式,让我们可以省去这个步骤.很简单的一个例子:array[10]
和 [array objectAtIndex:10]
你更愿意用哪个呢?