ios - iOS swift 3 中的回调

标签 ios swift

您好,是否可以进行这样的回调?我想传递一个函数作为参数,以便能够在某些任务完成后运行回调函数。

class ConnectBLE {
    var callBackFunc: ()->()

    init(callFunc: @escaping () -> ()){

        callBackFunc = callFunc
    }

    func runCallBackFunc() {
        callBackFunc()
    }
}
class DelegateARC {
    private let object = ConnectBLE(callFunc: RaspakHC05)

    func RaspakHC05() {
        print("hello from a callback")
    }
}

但是我有一个错误。 无法将“(DelegateARC) -> () -> ()”类型的值转换为预期的参数类型“() -> ()”

最佳答案

您不能在需要self (RaspakHC05) 的类的顶层运行非惰性代码。

除此之外,您还必须在 ConnectBLE 中的某处调用 runCallBackFunc() 来执行闭包。

你可以(在 Playground 中)

class ConnectBLE {
    var callBackFunc: ()->()

    init(callFunc: @escaping () -> ()){
        callBackFunc = callFunc
    }

    func runCallBackFunc() {
        callBackFunc()
    }
}
class DelegateARC {

    init() {
        ConnectBLE(callFunc: RaspakHC05).runCallBackFunc()
    }

    func RaspakHC05() {
        print("hello from a callback")
    }
}


DelegateARC() // prints "hello from a callback"

关于ios - iOS swift 3 中的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44527861/

相关文章:

ios - 在 iOS 数据库中存储和更新 Lat Long 值

ios - "react native pushnotificationIOS "scheduleLocalNotification"firedate 对象格式

ios - 将 enumerateObjectsUsingBlock 转换为快速枚举 - Swift

arrays - Swift - 根据相同的特征对元素进行分组

javascript - 在 native safari 应用程序扩展中我们如何使用 swift 的参数调用 javascript 函数?

ios - 我的 TableViewController 卡住了(初学者)

objective-c - UITextField -- 为 leftView 添加 UIView - 无法获得焦点

ios - 确定从 iPhone 中的 URL 检索 JSON 的问题

ios - 将本地文件添加到项目文件

swift - 使用手指滑动更改选项卡栏 Controller 中的选项卡