我試圖調用SCNetworkReachabilitySetCallback
所述第二參數,其中是SCNetworkReachabilityCallBack
夫特:使C函數(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
}
並將其作爲參數傳遞。 I'n斯威夫特似乎我應該通過與簽名封閉在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'
這是有點令人費解!
是否有其他人遇到此問題或有解決方案?
目前尚不支持此功能,請參閱http://stackoverflow.com/questions/25057161/how-to-use-the-coreaudio-api-in-swift獲取類似問題。我認爲這個限制仍然適用於Beta 7。 – 2014-09-04 07:50:45