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

[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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 十一个月大宝宝不吃奶吃饭怎么办 十一个月宝宝光吃奶不吃饭怎么办 20个月宝宝爱吃奶不爱吃饭怎么办 宝宝8个多月不肯米糊跟粥怎么办 8个月宝宝突然不肯吃米糊了怎么办 八个月宝宝突然不吃辅食怎么办 八个月宝宝拉屎费劲还干怎么办 两个月的小孩不喜欢吃奶粉怎么办 三个多月的宝宝不爱吃奶怎么办 4个月的宝宝不吃奶怎么办 九个月宝宝一直高烧不退怎么办 8个月宝宝不吃辅食怎么办 孩子七个月了母乳不够了怎么办 11个月宝宝吃的太多怎么办 宝宝十一个月了上火眼死太多怎么办 9个月孩子不吃辅食怎么办 y一夜没有睡好现在母乳不够怎么办 喂母乳的婴儿总要吃奶怎么办 宝宝四个月了奶水不够吃怎么办 宝宝出生十天了奶水不够吃怎么办 宝宝晚上不吃奶了奶水多怎么办 我家小孩六个月了奶不够吃怎么办 六个月的宝宝奶不够吃怎么办 宝贝六个月了奶不够吃怎么办 奶不够吃宝宝又不吃奶粉怎么办 婴儿到新环境哭闹不睡觉怎么办 婴儿到陌生地方狂哭不止怎么办 在家里遇到有人有陌生人敲门怎么办 在家里晚上睡觉遇到持刀小偷怎么办 在租房中房东随意调换房间怎么办 梦见熟人当面说我坏话偷东西怎么办 偷了家里的存折拿了钱该怎么办 故意让小偷偷车捉住他怎么办 进屋门正对着厕所门怎么办 楼房对面门上放个镜子我该怎么办 从顺丰发的水果坏了顺丰不管怎么办 汽车塑料件被机头水腐蚀了怎么办 孕期吃了炒菜里面加的香精怎么办 五个月宝宝只长身高不长体重怎么办 孩子6个月奶水越来越少怎么办 孩子快三个月了奶水越来越少怎么办