iOS开发过程中链式编程平时运用的最多的应该就是
Masonry的约束,刚开始用masonry时就感觉莫名其妙,只是按照规则用”.”把一系列设置连接起来,感觉可读性很好并没有深入探究,偶尔看到链式编程的思想,就是以Masonry举得例子,才认识到这其实是一种让代码可读性更强,也能提高开发效率的一种思想,决定好好探究一下。其实在oc中实现链式编程只要巧妙运用Block就行了。平时大家用的最多的调用实例方法是传统的[obj method];其实实例方法都可以用点语法调用(类方法不行,也许我孤陋寡闻吧,以前没用.调用过方法)。oc的链式编程就是用点语法一个一个方法连着调用,然后形成链式,加上方法名称命名清晰,然后就读起来很容易懂。要实现能够连续不断调用就需要在上一个调用完返回值是这个实例本身,也就是self,上代码吧,还是很容易懂的。
#import
<Foundation/Foundation.h>
@interface Man : NSObject
- ( Man *)washHair; // 洗头
- ( Man *(^)( NSString * place))goTo; // 去某个地方
- ( Man *(^)( NSString * girl))meet; // 约会一个妹子
@interface Man : NSObject
- ( Man *)washHair; // 洗头
- ( Man *(^)( NSString * place))goTo; // 去某个地方
- ( Man *(^)( NSString * girl))meet; // 约会一个妹子
@end
#import
"Man.h"
@implementation Man
- ( Man *)washHair{
NSLog ( @" 某程序猿早上洗头出门 " );
return self ;
}
- ( Man *(^)( NSString *))goTo{
return ^( NSString * place){
NSLog ( @" 去 %@" ,place);
return self ;
};
}
- ( Man *(^)( NSString *))meet{
return ^( NSString * girl){
NSLog ( @" 约会 %@" , girl);
return self ;
};
}
@implementation Man
- ( Man *)washHair{
NSLog ( @" 某程序猿早上洗头出门 " );
return self ;
}
- ( Man *(^)( NSString *))goTo{
return ^( NSString * place){
NSLog ( @" 去 %@" ,place);
return self ;
};
}
- ( Man *(^)( NSString *))meet{
return ^( NSString * girl){
NSLog ( @" 约会 %@" , girl);
return self ;
};
}
@end
调用:
Man
* man = [[
Man
alloc
]
init
];
man.washHair.goTo(@"西湖").meet(@"妹子");
第一个方法washHair不需要参数,我们只需要返回一个self就可以,不需要写在Block里面,后面的需要参数,相当于把一个方法放在了一个Block里面用()调用Block
最后,平时可以用链式方法来写的情况我觉得,1.封装一些自定义View的时候,一系列颜色等等的设置我觉得可以用链式写法,2.一系列连续并有序的调用方法,可以尝试写成链式。3.拆分一些比较庞大的嵌套调用,分解成链式调用 欢迎大家补充,谢谢!