iOS 链式编程探索(Masonry)
2016-06-28 16:53
453 查看
看了几篇关于链式编程的文章,还是理解的不透彻,我想这可能是因为我自己对block掌握的不熟练。
我已经明白了,所以,和大家分享一下我的理解!如有问题,麻烦大家指出!
直接看代码吧!关键的注释都有。
我自己运行过,可以正常运行!(控制台代码)
原创文章,转载请注明出处!谢谢合作!
比较有价值的参考资料:http://www.jianshu.com/p/540711c1a507
我已经明白了,所以,和大家分享一下我的理解!如有问题,麻烦大家指出!
直接看代码吧!关键的注释都有。
我自己运行过,可以正常运行!(控制台代码)
#import <Foundation/Foundation.h> @class CalculatorMaker; typedef CalculatorMaker *(^ReturnBlock)(int); // Class - CalculatorMaker @interface CalculatorMaker : NSObject @property (nonatomic, assign) int result; - (ReturnBlock)add; @end @implementation CalculatorMaker - (ReturnBlock)add{ //add被执行,返回一个用于计算的block return ^CalculatorMaker *(int x){ //这里的CalculatorMaker *是为了说明问题。日常使用建议用id self.result += x; return self; //返回了一个CalculatorMaker * }; } @end // Category - Caculator @interface NSObject (Caculator) + (int)makeCaculators:(void(^)(CalculatorMaker *make))caculatorBlock; @end @implementation NSObject (Calculate) + (int)makeCaculators:(void(^)(CalculatorMaker *make))caculatorBlock{ CalculatorMaker *maker = [[CalculatorMaker alloc]init]; caculatorBlock(maker); return maker.result; } @end // main int main(int argc, const char * argv[]) { @autoreleasepool { int result = [NSObject makeCaculators:^(CalculatorMaker *maker){ CalculatorMaker *mk = [[CalculatorMaker alloc]init]; ReturnBlock blc = mk.add; //blc为add方法执行后返回的block mk = blc(1); //执行block后,block返回了一个CalculatorMaker实例 maker.result = mk.add(2).add(3).result; //因此,可以直接进行链式编程 //mk.add返回了一个block,block(2)返回了一个实例(加入叫obj),这个实例obj执行add,又返回了一个block //block又执行block(3)后又返回了一个实例 }]; NSLog(@"\nresult = %d",result); } return 0; }
原创文章,转载请注明出处!谢谢合作!
比较有价值的参考资料:http://www.jianshu.com/p/540711c1a507
相关文章推荐
- iOS 开发 一些常用的公共方法
- iOS修改项目名称
- iOS显示启动页时隐藏状态栏
- iOS中try-catch-finally捕获异常使用
- iOS 8 新特性 tableViewcell 删除
- IOS系列-@property里的assign,copy,retain区别
- IOS开发直播客户端的SDK
- iOS中静态库的介绍及使用(1)
- ios学习路线—ios沙盒(sandbox)机制和文件操作(一)
- iOS 键盘自适应评论cell下方
- iOS PhotoBrowser - ZLThumbnailViewController 获取900张以上图片内存警告闪退的问题
- IOS 高德地图导航
- 你真的了解iOS代理设计模式吗?
- 唐巧总结的40个国人iOS技术博客
- iOS9.2.1降级工具和降级过程
- iOS之获取设备ID
- iOS frame与bounds区别详解
- IOS 8.1.2降级教程
- iOS 圆角跟随屏幕尺寸变化,字体跟随屏幕尺寸变化
- 【原创】NIO框架入门(三):iOS与MINA2、Netty4的跨平台UDP双向通信实战