ios - Swift:传递 C 函数 (SCNetworkReachabilityCallBack)

标签 ios swift reachability

我正在尝试调用 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/

相关文章:

ios - Apple 的可达性测试究竟需要什么?

ios - Reddit分享按钮 swift 3

ios - 没有设置触摸手势,但tabBar只响应长按。为什么?

arrays - Swift - 将 UInt8 字节转换为位数组

swift - UITabBarController应用(Swift 1.2)中用于iCloud同步的核心数据堆栈实现

ios - WiFi的iOS设备场景,但无法访问互联网

iphone - 在后台运行时接收可达性通知?

ios - 如何从对象列表中滚动到第一个不完整的对象

ios - 转换在 iOS swift 中没有正确发生?

ios - 在iphone中解析包含unicode字符的XML文件