美文网首页
Block in Swift

Block in Swift

作者: Show_Perry | 来源:发表于2017-07-04 15:25 被阅读20次

在用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
}

闭包详情参考苹果文档

相关文章

网友评论

      本文标题:Block in Swift

      本文链接:https://www.haomeiwen.com/subject/cjcxhxtx.html