美文网首页移动开发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实现

    链式编程的优点:1.优雅易读2.书写效率高 链式编程的缺点:1.效率比原生略低2.出错定位比原生较难 我们以为可变...

  • OC链式编程的一个实践

    所谓链式编程,基本都是调用一个方法的时候返回对象本身,然后可以继续调用方法。以OC为例: 不过OC使用中括号调用方...

  • Scala 令人发指的特殊符号

    集合相关 +=和++=(字符串拼接) +=方法还可以:为可变数组添加元素、为map添加新的值 -=方法可以:为可变...

  • swift 数组

    定义一个不可变数 或者 定义可变数组 定义一个空数组 可变数组添加元素 删除数组 修改元素 取出某个元素 遍历数组...

  • python的list和tuple

    说白了,前面的是OC中的可变数组,后面的是不可变数组。 使用len()获取它的元素个数,相当于OC中的count,...

  • 链式文件生成器原理分析(一)

    在OC里面实现链式编程,可以使用返回调用者自身来实现。但是类有很多,每个类也有很多方法,假如要实现链式编程,则需要...

  • Object c可变数组

    本节学习内容: 1.可变数组的概念 2.可变数组的创建及初始化 3.向可变数组中添加元素 4.数组元素的替换 5....

  • js 元素添加父元素

    以多个video分别添加父元素div为例

  • Unity Android iOS 交互(不用UnitySend

    以实现弹窗为例。 C#代码 java代码 oc代码

  • Jquery链式内部原理

    //以设置元素样式、显示、隐藏为例封装一个链式函数 var Jq = function(){} Jq.protot...

网友评论

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

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