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,代码如下:

[objc] view plaincopy在CODE上查看代码片派生到我的代码片
  1. //委托的协议定义  
  2. @protocol UpdateAlertDelegate <NSObject>  
  3. - (void)updateAlert;  
  4. @end  
  5.   
  6.   
  7.   
  8. @interface TimerControl : NSObject  
  9. //委托变量定义  
  10. @property (nonatomic, weak) id<UpdateAlertDelegate> delegate;  
  11.   
  12.   
  13. //block  
  14. typedef void (^UpdateAlertBlock)();  
  15. @property (nonatomiccopy) UpdateAlertBlock updateAlertBlock;  
  16.   
  17. - (void) startTheTimer;  
  18.      
  19. @end  


 

A类的实现文件,原来用委托的地方改成调用block:

[objc] view plaincopy在CODE上查看代码片派生到我的代码片
  1. - (void) timerProc  
  2. {  
  3.     //[self.delegate updateAlert];//委托更新UI  
  4.     //block代替委托  
  5.     if (self.updateAlertBlock)  
  6.     {  
  7.         self.updateAlertBlock();  
  8.     }  
  9. }  


 

再来看看视图类,实现block即可:

[objc] view plaincopy在CODE上查看代码片派生到我的代码片
  1. - (void)viewDidLoad  
  2. {  
  3.     [super viewDidLoad];  
  4.     // Do any additional setup after loading the view, typically from a nib.  
  5.     TimerControl *timer = [[TimerControl alloc] init];  
  6.     timer.delegate = self//设置委托实例  
  7.       
  8.     //实现block  
  9.     timer.updateAlertBlock = ^()  
  10.     {  
  11.         UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"提示" message:@"时间到" delegate:self cancelButtonTitle:nil otherButtonTitles:@"确定",nil];  
  12.           
  13.         alert.alertViewStyle=UIAlertViewStyleDefault;  
  14.         [alert show];  
  15.     };  
  16.       
  17.       
  18.       
  19.     [timer startTheTimer];//启动定时器,定时5触发  
  20. }  

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 我在相亲市场太受欢迎了怎么办小说 有人报警说我诈骗警察说立案怎么办 微信账号长时间未登录不想要怎么办 手机号注销了百度云登录不了怎么办 申请百度云账号的手机不用了怎么办 新注册的微信号显示账号异常怎么办 注册公众号说邮箱被占用了怎么办 向钱贷登录手机号换了怎么办 qq号绑定的手机号码换了怎么办 用手机号注册的支付宝换号了怎么办 支付宝转的账户手机号消号了怎么办 激活微信账号手机号写错了怎么办 大学试卷没有写名字和考号怎么办 公司被注销了公众号还想要怎么办 公司认证的公众号公司注销了怎么办 信而富注册手机号码不用了怎么办 信而富本时段额度已放完怎么办 知道qq号密码账号忘了怎么办 扣扣绑定的手机号被别人用了怎么办 我的手机号被别人绑定了快手怎么办 微信密码忘记了没绑定手机号怎么办 扣扣绑定银行卡忘记密码了怎么办 扣扣忘记密码了又换手机号了怎么办 微信订阅号里有删除后的信息怎么办 申请微信公众号邮箱已被占用怎么办 公众号验证没有对公账户怎么办 qq密码忘记了怎么办手机绑定没有 我的扣扣怎么申诉都找不回来怎么办 装修装的不好又没有签合同怎么办 日本免税的零食不小心拆了怎么办 闲鱼同意买家退货了买家不退怎么办 手机里淘宝钱付了不发货怎么办 百度云下载手机储存空间不足怎么办 苹果8的照片储存空间满了怎么办 为什么下载的软件已停止运行怎么办 苹果手机刷机忘记注册邮箱了怎么办 刺激战场模拟器注册已达上限怎么办 用模拟器玩刺激战场注册上限怎么办 微信解除实名认证后退款怎么办 苹果为什么qq收消息有延迟怎么办 qq忘记密码手机号也换了怎么办