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

链式编程的优点:
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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容