IOS学习之委托和block
来源:互联网 发布:零基础写java知乎爬虫 编辑:程序博客网 时间:2024/06/02 02:38
转载请注明出处
作者:小马
这篇文章建议和前一篇一起看, 另外先弄清楚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代码块
- windows中启动多个memcached服务
- 职场分享:哪种求职者最受企业青睐
- Android的NumberPicker数量选择器
- MYSQL中文存不进
- 摄像机跟随问题
- IOS学习之委托和block
- .net的asp:FileUpload 上传文件
- 解决安装WordPress主题及插件需要输入FTP问题
- 越狱了的设备无法测试Game Center
- 用Python和Pygame写游戏-从入门到精通(11)
- linux硬链接与软链接
- Java使用Quartz详解
- Cocos2D-X射击小游戏(五)编码3 设置计时器
- ROW_NUMBER() over(order by ID) 的用法