Я пытаюсь вызвать SCNetworkReachabilitySetCallback
второй параметр которого SCNetworkReachabilityCallBack
Swift: прохождение 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'
что несколько озадачивает!
Неужели кто-нибудь еще сталкивается с этой проблемой или имеет решение?
Это в настоящее время не поддерживается, см http://stackoverflow.com/questions/25057161/how-to-use-the-coreaudio-api-in-swift для подобного вопроса. Я думаю, что это ограничение по-прежнему относится к бета-версии 7. –