美文网首页链式编程
iOS-链式编程思想

iOS-链式编程思想

作者: 顶级蜗牛 | 来源:发表于2017-08-17 10:03 被阅读86次

    在iOS中,链式编程虽然用的不太多,但是,在特定的应用环境下,利用block实现链式编程的话,会大大的提高编程效率,并且代码直观易读。

    iOS中链式编程中最经典的例子是Masonry为代表的代码形式,代码如下:

    make.top.left.equalTo(@20);

    我们知道OC的点语法实际上就是调用getter/setter方法,能实现这种链式最根本的原因是每次使用调用getter方法的时候的返回值实际上就是对象本身,这样我们就能一直使用该对象一直使用点语法去调用。

    Swift和OC的写法是有区别:

    Swift是直接返回对象本身,如:

    func name(_ name: String) -> Person {}

    OC 是返回一个 返回值为对象本身的 Block,如:

    - (Person * (^)(NSString *))name;

    造成这种差别的原因是:

    1.Swift中的点语法是可以直接用来使用方法的。

    2.OC中的点语法实际就是一个 getter/setter 方法,使用点语法,那么相当于使用 getter/setter 方法获取属性,因此采用和Swift类似的方法的话,只能用 [ ] 来调用,那么他的链式就表现为

    [[[person name(@"Lily")] sex(@"men")] age(19)];

    缺乏美感,也不简洁。但是返回带参数,返回值为对象本身的 Block 的话,则可以表现为是一个 getter 方法,get一个 Block,然后在Block中传递参数。

    例子:

    Swift 链式编程

    Swift中的实现链式编程比Objective-C中简单很多,通过func和extension即可实现。

    扩展UIView:

    调用方法:

    测试代码

    Objective-C 链式编程

    Objective-C中实现链式编程主要是通过Block来实现,利用方法的点式调用,自定义LWJView,定义如下:

    LWJView.h

    实现如下:

    LWJView.m

    调用方法:

    测试代码

    运行的结果都是:

    运行结果图

    相关文章

      网友评论

        本文标题:iOS-链式编程思想

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