虽然链式编程很少见,但是某些场合下,如果能够巧妙利用block 实现链式编程的话,不仅会提高开发效率,而且代码很清晰直观!也许你会爱上它的!学习它,你只需记住它的写法就行了。
我曾经做过一个蓝牙项目,由于步骤比较多!因为常规写法要调用很多方法一大堆代码看起来也晕晕的,后来,使用到链式编程,代码易读使用更方便!下面分享一下链式编程的简单使用!
链式编程,没什么难,就是利用block直接按照格式写就行了。
下面用一个例子说明:我要去市场买菜!!!(常规写法:)
-首先:新建一个Person类
创建方法(常规写法):
// 无返回值
- (void)peoples; // 谁
- (void)byBuses; // 坐公交去
- (void)buyVege; // 买东西-
实现方法:
// 无返回值
- (void)peoples
{
NSLog(@"我");
}- (void)byBuses { NSLog(@"坐公交去"); } - (void)buyVege { NSLog(@"买西红柿和茄子"); }
-
在main函数调用:
Person *p = [[Person alloc] init];[p peoples]; [p byBuses]; [p buyVege];
打印结果:
缺点:如果有许多方法呢?在调用的时候那就要写好多行代码,而且也不好看!
用block 巧妙使用链式编程:
和上面一样,就是注意格式写法而已,并且多了个返回值。
声明方法:
// 我做车去买菜
- (Person *(^)(NSString *name))people; // 谁
- (Person *(^)())byBus;// 做公交
- (Person *(^)(NSString *VegName))buyVegetables; // 去买菜-
实现方法:
// 我做车去买菜
- (Person *(^)(NSString *))people
{
return ^(NSString *name){
NSLog(@"帅哥:%@",name);
return self;
};
}- (Person *(^)())byBus { return ^{ NSLog(@"坐公交去"); return self; }; } - (Person *(^)(NSString *))buyVegetables { return ^(NSString *buyVege){ NSLog(@"买:%@",buyVege); return self; }; }
在main函数调用:
Person *p = [[Person alloc] init];
// 只需用点就实现调用了
p.people(@"光明程辉").byBus().buyVegetables(@"西红柿、茄子");
- 实现打印结果: