我正在尝试调用 SCNetworkReachabilitySetCallback
其中第二个参数为SCNetworkReachabilityCallBack
在 Swiftified 中 SCNetworkReachability.h
,这被定义为:
typealias SCNetworkReachabilityCallBack = CFunctionPointer<((SCNetworkReachability!, SCNetworkReachabilityFlags, UnsafeMutablePointer<Void>) -> Void)>
在 Objective-C 中,我将声明如下函数:
static void MYReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void* info) {
// do something
}
并将其作为参数传递。我是 Swift,看来我应该传递一个带有 SCNetworkReachabilityCallBack
中定义的签名的闭包,像这样:
let callback = { (target: SCNetworkReachability!, flags: SCNetworkReachabilityFlags, info: UnsafeMutablePointer<Void>) in
// Do something
}
但这给出了错误:
Cannot convert the expression's type '(SCNetworkReachability!, SCNetworkReachabilityFlags, UnsafeMutablePointer) -> (SCNetworkReachability!, SCNetworkReachabilityFlags, UnsafeMutablePointer) -> $T0' to type '(SCNetworkReachability!, SCNetworkReachabilityFlags, UnsafeMutablePointer) -> (SCNetworkReachability!, SCNetworkReachabilityFlags, UnsafeMutablePointer) -> $T0'
这有点令人费解!
有没有其他人遇到过这个问题或有解决方案?
最佳答案
static void MYReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void* info) {
// do something
}
关于ios - Swift:传递 C 函数 (SCNetworkReachabilityCallBack),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25659786/