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