一步一步教你理解和实现iOS中的链式编程和函数式编程
2016-12-28 23:25
691 查看
谈到链式编程和函数式编程,那Masonry几乎就是最经典的代表.如:
make.top.equalTo(self.view).offset(60)
像这样top.equalTo(self.view).offset(60)
通过”点”语法,将需要执行的代码块连续的书写下去,就是链式编程.它能使代码简单易读,书写方便
像这样equalTo(self.view)
通过’()’去调用函数,一般调用完返回的还是这个对象本身,就是函数式编程.
1.传统写法,两个方法需要单独调用,也不能任意组合顺序
创建Person类
Person.h: - (void)eat1; - (void)sleep1; Person.m: - (void)eat1 { NSLog(@"%s",__FUNCTION__); } - (void)sleep1 { NSLog(@"%s",__FUNCTION__); }
控制器中调用Person类中方法
ViewController.m: Person *person = [[Person alloc] init]; [person eat1]; [person sleep1];
2.用’[]’实现连续调用
Person.h: - (Person *)eat2; - (Person *)sleep2; Person.m: - (Person *)eat2 { NSLog(@"%s",__FUNCTION__); return self; } - (Person *)sleep2 { NSLog(@"%s",__FUNCTION__); return self; } ViewController.m: [[person eat2] sleep2]; [[person sleep2] eat2];
3.用’()”实现函数式编程,用block实现
Person.h: - (void (^)())eat3; - (void (^)())sleep3; Person.m: - (void (^)())eat3 { //定义block void (^eat3Block)() = ^ { NSLog(@"%s",__FUNCTION__); }; return eatBlock; } - (void (^)())sleep3 { return ^ { NSLog(@"%s",__FUNCTION__); };; } ViewController.m: person.eat3(); person.sleep3();
4.实现函数式 + 链式(无参)
Person.h: - (Person * (^)())eat4; - (Person * (^)())sleep4; Person.m: - (Person *(^)())eat4 { Person * (^eat4Block)() = ^ { NSLog(@"%s",__FUNCTION__); return self; }; return eat4Block; } //上下两种写法一样 - (Person *(^)())sleep4 { return ^ { NSLog(@"%s",__FUNCTION__); return self; }; } ViewController.m: person.eat4().sleep4(); person.sleep4().eat4();
5.实现函数式 + 链式(带参)
Person.h: - (Person * (^)(NSString *foodName))eat5; - (Person * (^)(NSInteger hour))sleep5; 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; }; } ViewController.m: person.eat5(@"蛋糕").sleep5(8); person.sleep5(8).eat5(@"面包");
相关文章推荐
- 通过实现一个TableView来理解iOS UI编程
- 链式编程,iOS简单封装属性字符串,实现富文本.
- 通过实现一个 TableView 来理解 iOS UI 编程
- iOS开发技巧系列---使用链式编程和Block来实现UIAlertView
- 实现iOS中的链式编程
- iOS利用block实现链式编程方法(Objective-C链式编程)
- iOS 利用Block实现链式编程
- iOS利用block实现链式编程方法(Objective-C链式编程)
- iOS中的函数式编程和链式编程
- iOS中函数式编程和链式编程的应用
- 理解iOS与函数式编程
- 简单点,理解iOS与函数式编程
- 通过实现一个 TableView 来理解 iOS UI 编程 (个人感觉写的很棒!)
- 通过实现一个 TableView 来理解 iOS UI 编程
- ios-链式编程、函数式编程以及响应式编程
- iOS 链式编程与函数式编程
- iOS 6编程-使用MPMoviePlayerController类实现视频播放器
- 函数式编程粗浅理解
- 一步一步学习 iOS 6 编程(第四版)正式发布!
- PHP调用静态方法实例化自己实现链式编程