iOS 链式编程写法

iOS 链式编程写法

1.用’[]’实现连续调用

1
2
3
4
Person.h:

- (Person *)eat2;
- (Person *)sleep2;
1
2
3
4
5
6
7
8
9
10
11
12
Person.m:

- (Person *)eat2
{
NSLog(@"%s",__FUNCTION__);
return self;
}
- (Person *)sleep2
{
NSLog(@"%s",__FUNCTION__);
return self;
}
1
2
3
4
ViewController.m:

[[person eat2] sleep2];
[[person sleep2] eat2];

2.用block实现链式

1
2
3
4
Person.h:

- (Person * (^)(NSString *foodName))eat5;
- (Person * (^)(NSInteger hour))sleep5;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Person.m:

- (Person *(^)(NSString *))eat5
{
Person * (^eat5Block)() = ^(NSString *foodName) {
NSLog(@"吃: %@",foodName);
return self;
};
return eat5Block;
}
//上下两种写法一样
- (Person *(^)(NSInteger))sleep5
{
return ^(NSInteger hour) {
NSLog(@"睡了%ld小时",(long)hour);
return self;
};
}
1
2
3
4
ViewController.m:

person.eat5(@"蛋糕").sleep5(8);
person.sleep5(8).eat5(@"面包");