美文网首页移动开发iOS入的那些坑iOS开发攻城狮的集散地
链式编程-以可变数组添加元素为例:OC实现

链式编程-以可变数组添加元素为例:OC实现

作者: NSPanda | 来源:发表于2016-01-24 02:29 被阅读417次

    链式编程的优点:
    1.优雅易读
    2.书写效率高

    链式编程的缺点:
    1.效率比原生略低
    2.出错定位比原生较难

    我们以为可变数组增加一个追加元素为例,比较一下两种的写法。

    原生写法:

    [muArr addObject:@"x"];
    [muArr addObject:@9];
    

    链式编程写法

    muArr.add(@"x").add(nil).add(@9);
    

    具体实现为:

    @interface NSMutableArray (PandaKit)
    - (NSMutableArray* (^)(id))add;
    @end
    
    @implementation NSMutableArray (PandaKit)
    - (NSMutableArray* (^)(id))add;
    {
        return ^id(id x) {
            if (x) {
                [self addObject:x];
            }
            return self;
        };
    }
    @end
    

    例子中,函数 add 的返回值是一个 以一个id类型作为传入参数,并返回 NSMutableArray 类型的 block*。在返回时,我们返回了这个 block ,既 我们调用 muArr.add 之后得到了一个上述描述的 block ,然后追加(@"x"),则是调用这个 block,这个block返回了 muArr ,这样我们就可以在后续继续用点语法进行链式调用了 。在block中我们判断了一下添加的x是否为nil,以免崩溃发生。

    链式编程在OC下实现的基本原理就是每个函数都返回一个以 self 为返回值的 block

    更多的例子可以参见 AutoLayout 库 Masonry

    相关文章

      网友评论

        本文标题:链式编程-以可变数组添加元素为例:OC实现

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