dispatch_block_t 简单的实现不带参数的回调函数
2016-06-23 12:32
330 查看
通常我写一个不带参数的块回调函数是这样写的
在 . h 头文件中
定义类型
在定义一个回调函数
在.m 文件中
今天学会一个高大上的方法
只要在.h 头文件定义属性方法
在.m文件 调用的方法里调用
在另个模块里直接
当然了也可以
其他都相同,这样也就简单了不少。
当然也有如下用法
在 . h 头文件中
定义类型
typedef void (^leftBlockAction)();
在定义一个回调函数
-(void)leftButtonAction:(leftBlockAction)leftBlock;
在.m 文件中
-(void)leftButtonAction:(leftBlockAction)leftBlock{ leftBlock(); }
今天学会一个高大上的方法
只要在.h 头文件定义属性方法
@property (nonatomic,copy) dispatch_block_t leftBlockAction;
在.m文件 调用的方法里调用
if (self.leftBlockAction) { self.leftBlockAction(); }
在另个模块里直接
MyView *alert = [[MyView alloc]init]; alert.leftBlockAction = ^() { NSLog(@"left button clicked"); };
当然了也可以
@property (nonatomic, copy) void(^signInBlock)(NSString *);
if (self.signInBlock) { self.signInBlock(@"今天您已经签到了"); }
其他都相同,这样也就简单了不少。
当然也有如下用法
typedef void (^DownloadSuccess) (NSString *downloadURL, NSData *data); typedef void (^DownloadFailure) (BNetworkError *error, id JSON); typedef void (^DownloadProgress) (CGFloat progress);
if (success){ dispatch_block_t block = ^{ success(url, data); }; if ([NSThread isMainThread] == NO) { dispatch_async(dispatch_get_main_queue(), block); }else{ block(); } }
相关文章推荐
- jquery.form.js关于$("form").ajaxSubmit is not a function原因 .
- RabbitMQ安装方法总结如下:
- 微软ASP.NET 电商网站开发实战 MVC6 +HTML5 +WCF+WebAPI+NoSQL+mongoDB+Redis+Core视频 代码 面试题
- LB之Haproxy
- 关于SqlServer连接报错的问题
- 欢迎使用CSDN-markdown编辑器
- 浅谈学习
- 浅谈学习
- Java学习笔记(14.2)JavaFX Basics
- 方案树(Resolution Tree)
- jquery禁用a标签,jquery禁用按钮click点击
- PDO概念及总结
- 循环队列
- 99.从 NSObject 初始化了解 isa指针
- 第二阶段团队冲刺站立会议08
- 父类事件与EditText事件冲突
- 如何学习数学,哈哈,数学其实蛮好玩的。
- 博客园学生管理系统 说明书
- 浅议block实现原理,block为什么使用copy关键字?
- java web下spring整合hibernate怎么用junit4测试