你的位置:首页 > 操作系统

[操作系统]iOS之 block,代替代理作为回调函数


最近在弄一个视频会议的项目,但今天要说的跟视频基本没关系,我们来说一下在一个view中创建一个button,在controller中加载这个view

当button被点击后将时间响应传递给controller,去做其他修改

 

大致就是这个环境下,我们很快想到用代理,当然可以,这里不阐述代理的实现过程我们用block来实现直接上代码

 1 xxxx.h 2 @interface xxxx : UIView 3 //这里一定要给block 的copy属性,具体原因请参照我关于block的文章 4 @property (nonatomic, copy) void (^ButtonBlock)(BTNACTION); 5 @end 6  7  8 xxxx.m 9 //这里是button点击事件10 -(void)menuAction:(UIButton *)btn11 {12  if(_ButtonBlock)13 14  _ButtonBlock( 这里传你要的参数或者你不传参数就什么都不写);15 16 }

2,这里要去给controller(连线了)有点跟代理很像

1   xxxx = [[xxxx alloc]initWithFrame:callUseLocalView.frame];2 3 //  __weak __typeof(self)weakSelf = self;4 5   xxxx.ButtonBlock = ^(BTNACTION action//我这里传的是结构体如果你不需要传参数这里忽略){6    7   //这里就是当你执行block,就会调用的 ,如果这里用到self,请注意循环引用问题8 };

每天记录一点点,让自己过得更充实

顺便吐槽下房租又涨了,搬砖,继续搬砖