鏈式編程的優(yōu)點:
1.優(yōu)雅易讀
2.書寫效率高
鏈式編程的缺點:
1.效率比原生略低
2.出錯定位比原生較難
我們以為可變數(shù)組增加一個追加元素為例瘾英,比較一下兩種的寫法。
原生寫法:
[muArr addObject:@"x"];
[muArr addObject:@9];
鏈式編程寫法
muArr.add(@"x").add(nil).add(@9);
具體實現(xiàn)為:
@interface NSMutableArray (PandaKit)
- (NSMutableArray* (^)(id))add;
@end
@implementation NSMutableArray (PandaKit)
- (NSMutableArray* (^)(id))add;
{
return ^id(id x) {
if (x) {
[self addObject:x];
}
return self;
};
}
@end
例子中胁勺,函數(shù) add 的返回值是一個 以一個id類型作為傳入?yún)?shù)翅雏,并返回 NSMutableArray 類型的 block*。在返回時匣椰,我們返回了這個 block 板惑,既 我們調(diào)用 muArr.add 之后得到了一個上述描述的 block 橄镜,然后追加(@"x"),則是調(diào)用這個 block冯乘,這個block返回了 muArr 洽胶,這樣我們就可以在后續(xù)繼續(xù)用點語法進行鏈式調(diào)用了 。在block中我們判斷了一下添加的x是否為nil裆馒,以免崩潰發(fā)生姊氓。
鏈式編程在OC下實現(xiàn)的基本原理就是每個函數(shù)都返回一個以 self 為返回值的 block。
更多的例子可以參見 AutoLayout 庫 Masonry喷好。