Block in Swift

在用Objective-c编程中我们常用Block作为回调,在改为swift编写后,如何兼容我们的Block呢?

在苹果的官方文档介绍中,swift中的闭包和Block是兼容的,因此如果你在Swift中要调用的Objc里的方法,且参数是Block类型,则使用满足这个Block返回类型及参数类型的闭包代替。

声明对比

typedef void (^ZHUpdateBlock)(ZHDevice *device, NSError*error);

对应闭包

public typealias ZHUpdateBlock = (ZHRealTekDevice?, Error?) -> Void

函数定义

-(void)scanDevice:(ZHUpdateBlock)update;
func scanDevice(update updateBlock: (_ device: ZHRealTekDevice?, _ error: Error?) -> Void) -> Void {
 }

函数中使用

[self scanDevice:^(ZHRealTekDevice *device,  NSError*error){
    // Do something...
 }];

对应闭包

self.realTekManager.scanDevice({(device :ZHRealTekDevice?, error:Error?) -> Void in
        // Do something...     
 })

闭包的表达式:

{ (parameters) -> return type in
    statements
}

闭包详情参考苹果文档

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,262评论 4 61
  • 外面阳光明媚,这是一个美好的周末。 今天准备做一件曾经失败过的事情-制作馍馍。记得我八九岁的时候,家里并不太富裕,...
    一阳的时光阅读 222评论 1 1
  • 今天又出现了挑战,看电视。这个一般是我家矛盾爆发的主要原因。今天处理的很利索,让我有点没想到。看电视前进行了约定:...
    粆敏阅读 198评论 0 0
  • 突然想去一个人来一场说走咱就走的旅行,在一个陌生的城市安静的呆着,感受那里慢节奏的生活
    Una520阅读 97评论 0 1