IOS学习之委托和block
来源:互联网 发布:淘宝售前售后哪个轻松 编辑:程序博客网 时间:2024/06/15 16:57
转自 http://blog.csdn.net/pony_maggie/article/details/25775069
这篇文章建议和前一篇一起看, 另外先弄清楚IOS的block是神马东东。
委托和block是IOS上实现回调的两种机制。Block基本可以代替委托的功能,而且实现起来比较简洁,比较推荐能用block的地方不要用委托。
本篇的demo和前一篇是同一个,可以到github上下载不同的版本, 源码下载地址:
https://github.com/pony-maggie/DelegateDemo
A类(timeControl类)的头文件先要定义block,代码如下:
- //委托的协议定义
- @protocol UpdateAlertDelegate <NSObject>
- - (void)updateAlert;
- @end
- @interface TimerControl : NSObject
- //委托变量定义
- @property (nonatomic, weak) id<UpdateAlertDelegate> delegate;
- //block
- typedef void (^UpdateAlertBlock)();
- @property (nonatomic, copy) UpdateAlertBlock updateAlertBlock;
- - (void) startTheTimer;
- @end
A类的实现文件,原来用委托的地方改成调用block:
- - (void) timerProc
- {
- //[self.delegate updateAlert];//委托更新UI
- //block代替委托
- if (self.updateAlertBlock)
- {
- self.updateAlertBlock();
- }
- }
再来看看视图类,实现block即可:
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- // Do any additional setup after loading the view, typically from a nib.
- TimerControl *timer = [[TimerControl alloc] init];
- timer.delegate = self; //设置委托实例
- //实现block
- timer.updateAlertBlock = ^()
- {
- UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"提示" message:@"时间到" delegate:self cancelButtonTitle:nil otherButtonTitles:@"确定",nil];
- alert.alertViewStyle=UIAlertViewStyleDefault;
- [alert show];
- };
- [timer startTheTimer];//启动定时器,定时5触发
- }
0 0
- IOS学习之委托和block
- IOS学习之委托和block
- IOS学习之委托和block
- ios学习笔记:委托和block怎么用~~~
- ios 委托(delegate)和block 对比
- ios学习之block
- iOS 学习之 Block
- iOS学习之block
- iOS学习之block
- ios学习之block初探
- IOS学习之OC语言BLOCK和协议
- iOS 之GCD和Block
- iOS学习之委托及属性
- IOS学习笔记之协议与委托
- iOS学习之block(一)
- iOS 学习之——block
- iOS学习之Block内存管理详解
- IOS学习之block代码块
- Loadrunner11监控LINUX服务器
- 亲历基本OSGI实例,进入另番思维领域(转)----包括打包发布为可执行文件
- 【Android应用开发技术:用户界面】界面导航设计
- LWIP互联网资料汇总
- cmake 命令行
- IOS学习之委托和block
- driver 开发常用API笔记
- 网站统计中的数据收集原理及实现
- HDUOJ A+Bproble 题目1089 1090 1091 1092 1093 1094 1095 1096
- Java经典位运算实例
- Rational Rose 2007(v7.0)下载地址、安装及激活详解教程
- 2014年 华为机试题(一)(二)(三)
- VS2008 fstream 编译出错的解决方法
- node msgpack5 数据传输 简单实现