Block来替代Delegate

其实Block替代Delegate这件事早就想干了,从很久以前用ASI框架切换到AFNetworking的时候,就被这种优雅的回调方式感动过,但就是因为懒,一直没进行下去,这里记录一下怎么简单的用Block来替代Delegate写回调

首先,用Objective-C语言写一个简单的Delegate回调,写一个BtnView,大致功能就是上面有一个按钮,点击了会调用BtnViewDelegate所委托类的btnDidClick方法,很简单,直接上代码

下面是按钮加点击回调事件

然后在ViewController里就可以调用这个回调了

下面改造成block模式,这里要注意的是,想让按钮点击有一个block回调,这个block回调是作为函数的参数存在的,所以在真正处理点击事件的时候,要把回调方法中这个参数和点击事件连接起来,下面上代码,首先.h文件,去掉delegate,添加block

下面是BtnView.m文件

接下来就是调用了,点击按钮以后一样可以实现delegate实现的效果

update: swift写法

BtnView:

使用回调的时候

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注