iOS-链式编程思想

在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的开发语言之一--Objective-C,是一门动态语言,它使用了一种动态的消息发送机制,即对象(ob...
    Coder_gaigai阅读 674评论 0 1
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,269评论 4 61
  • 2017年3月20日,我离开了实习3个多月的公司。其间,经过了1个月的认真考虑,觉得这里真的不适合自己。无论是在工...
    财税小筑阅读 205评论 0 0
  • 人生很短,但大多数人有限的人生又恨平凡甚至平淡无味,有时会让自己产生一种错觉,即我活在这个世界上到底是为了什么,现...
    环盈阅读 365评论 0 3
  • 文/郭青年(海飞) 我们是不是在一条街,妥协而后离别。你是否已忘记,幸福总是要经过痛苦这个季,不要再说把甜蜜排在雨...
    郭青年阅读 323评论 0 1