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阅读 292评论 0 1
  • 2017年3月20日,我离开了实习3个多月的公司。其间,经过了1个月的认真考虑,觉得这里真的不适合自己。无论是在工...
    财税小筑阅读 42评论 0 0
  • 人生很短,但大多数人有限的人生又恨平凡甚至平淡无味,有时会让自己产生一种错觉,即我活在这个世界上到底是为了什么,现...
    环盈阅读 36评论 0 3
  • 文/郭青年(海飞) 我们是不是在一条街,妥协而后离别。你是否已忘记,幸福总是要经过痛苦这个季,不要再说把甜蜜排在雨...
    郭青年阅读 72评论 0 1
  • 想到明天就要去北京看姐姐啦,竟然是激动的睡不着觉了。脑子里游荡的都是姐姐从小到大给我的深情爱意。 姐姐长我两岁,是...
    墨古颜冰阅读 84评论 2 3