美文网首页
OC中的对象下标索引

OC中的对象下标索引

作者: kenny肉桂 | 来源:发表于2016-09-27 16:10 被阅读388次

相信对Swift有一定了解的人都知道它的下标语法.这个语法让类具备了像字典或者数组那样,利用下标获取一些东西的能力.但是,很多开发者或许不知道,OC中早就在Xcode4的时代,就已经有了这个语法.

OC中的对象下标语法

正如数组和字典, OC中的下标也分为了索引和键位.
索引下标需要声明和实现这两个方法:

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

键索引下标需要实现这两个方法:

- (id)objectForKeyedSubscript:(id <NSCopying>)key;
- (void)setObject:(id)obj forKeyedSubscript:(id <NSCopying>)key;

这么说还是有些抽象, 现在来具体看个例子:

具体代码

@interface BlackBox : NSObject

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

- (id)objectForKeyedSubscript:(id <NSCopying>)key;
- (void)setObject:(id)obj forKeyedSubscript:(id <NSCopying>)key;

@end

- (id)objectAtIndexedSubscript:(NSUInteger)idx{
  //做各种逻辑构造返回对象
    return @(idx);
}
- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)idx{
    
}

- (id)objectForKeyedSubscript:(id <NSCopying>)key{
    NSString *condition = (NSString*)key;
    //做各种逻辑构造返回对象
    return condition;
}
- (void)setObject:(id)obj forKeyedSubscript:(id <NSCopying>)key{
    
}

然后使用方法:

    BlackBox *blackBox = [BlackBox new];
    id object1 = blackBox[1];
    id object2 = blackBox[@"all objects where value >= 100"];

使用场景

这个最好的感觉,就是封装细节.
现在比较火的路由,用这个方法去实现就比较好,例如:

routes[@"black module://rootController:23"] = ^(id param){
        //逻辑代码
}

和方法的对比

然后这个用方法来实现,也是okay的啊,为啥要用这个下标呢? 个人感觉,本身,我们编程工作,很大一部分的内容就是命名.而这个命名也是很容易出问题的地方.而下标的方式,让我们可以省去这个步骤.很简单的一个例子:
array[10][array objectAtIndex:10]你更愿意用哪个呢?

相关文章

  • OC中的对象下标索引

    相信对Swift有一定了解的人都知道它的下标语法.这个语法让类具备了像字典或者数组那样,利用下标获取一些东西的能力...

  • subscripts(下标)

    subscripts(下标): 访问对象中数据的快捷方式所谓下标脚本语法就是能够通过, 实例[索引值]来访问实例中...

  • Swift下标访问-Subscript

    subscripts(下标)是访问对象数据中的快捷方式,所谓下标脚本语法就是能够通过,实例[索引值]来访问实例中的...

  • Objective-C数组

    数组 数组是一个有序的集合,OC中的数组只能存储对象类型,但是对于对象的类型没有限制。通过下标访问数组元素,下标从...

  • Objective-C数组字典集合(17-07-31)

    数组是一个有序集合,oc中只能存储对象类型。下标从0开始,通过下标访问数组元素。NSArray:创建好后,数组中的...

  • 2.索引

    索引 1.双下标索引 2.单下标索引 3.双下标索引转换为单下标索引单下标索引=sub2ind(size,m,n)...

  • 字符串

    下标索引 字符串中‘下标’的使用列表与元组支持下标索引好理解,字符串实际上就是字符的数组,所以也支持下标索引。 如...

  • PaddlePaddle中的Tensor索引与切片

    在PaddlePaddle中的Tensor索引与切片的规则如下: 基于 0-n 的下标进行索引 如果下标为负数,则...

  • O-C04(数组、字典、集合)

    一、数组类 数组是一个有序的集合,OC中的数组只能储存对象类型,但是对于对象的类型没有限制。 通过下标访问数组元素...

  • 零基础小白学习:python之最详细字符串篇

    python中引号引起来的就是字符串 索引 索引(下标)通过索引下标可以精确的地位到某个元素 # 变量名未 tit...

网友评论

      本文标题:OC中的对象下标索引

      本文链接:https://www.haomeiwen.com/subject/concyttx.html