KRISKEE'S BLOG[GO]

链式编程学习随笔

  众所周知, 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()模式书写函数,  又可以返回对象本身,  进行链式编程.

posted @ 2016-04-28 17:28  Kriskee  阅读(411)  评论(0编辑  收藏  举报