2014-09-04 19 views
1

我試圖調用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'

這是有點令人費解!

是否有其他人遇到此問題或有解決方案?

+2

目前尚不支持此功能,請參閱http://stackoverflow.com/questions/25057161/how-to-use-the-coreaudio-api-in-swift獲取類似問題。我認爲這個限制仍然適用於Beta 7。 – 2014-09-04 07:50:45

回答

-4
static void MYReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void* info) { 
     // do something 
} 
+1

這只是我的問題的C回調! – 2014-09-05 18:18:45