链式编程学习随笔
众所周知, OC的函数调用语法是使用 " [类名 类方法] " 或 " [对象 实例方法] " 进行调用的, 在使用时 ( 尤其是对对象进行属性的设置 ) 往往需要写几行代码, 重复进行 " [对象 实例方法] " 的使用. 而链式编程思想则是针对于事件的处理, 使用点语法( . )直接调用对象方法进行操作, 不仅节省代码,而且可读性更好.
在强大的第三方库Masonry中就大量使用链式编程.
链式编程的函数(方法)调用模式类似于C语言. 在OC中, 我们可是使用Block进行方法的处理, 实现类似于:
object.method_1().method_2().method_3();
的方法调用模式.
<注意!>
①OC中实现链式编程需要使用到Block, Block可以作为属性, 也可以作为匿名函数进行调用
②函数必须要有返回值, 返回当前对象本身
1 // 声明 2 - (Class_Test_of_Chain_Programming* (^)(NSString*, NSString*, NSInteger))setName_andSex_andAge; 3 4 // 实现 5 - (Class_Test_of_Chain_Programming* (^)(NSString*, NSString*, NSInteger))setName_andSex_andAge{ 6 7 return ^Class_Test_of_Chain_Programming *(NSString *name, NSString *sex, NSInteger age){ 8 self.name_attr = name; 9 self.sex_attr = sex; 10 self.age_attr = age; 11 return self; 12 }; 13 14 }
15
16 // 调用
17 objc.setName_andSex_andAge(@"Test", @"M", 20);
OC的链式函数, 返回值为对象本身, 并需要使用C函数调用模式, 就需要在返回值处填写: ( class_exp* (^)(type_exp) ). 这样, 既可以使用method()模式书写函数, 又可以返回对象本身, 进行链式编程.