2014-09-04 2 views
1

Я пытаюсь вызвать SCNetworkReachabilitySetCallback второй параметр которого SCNetworkReachabilityCallBackSwift: прохождение C Function (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 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'

что несколько озадачивает!

Неужели кто-нибудь еще сталкивается с этой проблемой или имеет решение?

+2

Это в настоящее время не поддерживается, см http://stackoverflow.com/questions/25057161/how-to-use-the-coreaudio-api-in-swift для подобного вопроса. Я думаю, что это ограничение по-прежнему относится к бета-версии 7. –

ответ

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

Это просто обратный вызов C из моего вопроса! –

Смежные вопросы