Skip to content

Instantly share code, notes, and snippets.

@s4y
Created February 9, 2015 00:47
Show Gist options
  • Save s4y/7cb7cc586521ffe392a6 to your computer and use it in GitHub Desktop.
Save s4y/7cb7cc586521ffe392a6 to your computer and use it in GitHub Desktop.
NSNetService.resolveWithTimeout (with success callback)
extension NSNetService {
func resolveWithTimeout(timeout: NSTimeInterval, success: () -> ()) {
class NetServiceDelegate: NSObject, NSNetServiceDelegate {
let oldDelegate: NSNetServiceDelegate?
let netService: NSNetService
let success: () -> ()
var holdSelf: NetServiceDelegate?
init(netService: NSNetService, success: () -> ()) {
self.oldDelegate = netService.delegate
self.netService = netService
self.success = success
super.init()
holdSelf = self
netService.delegate = self
}
private func finish() {
netService.delegate = oldDelegate
holdSelf = nil
}
private func netServiceDidResolveAddress(sender: NSNetService) {
success()
finish()
}
private func netService(sender: NSNetService, didNotResolve errorDict: [NSObject : AnyObject]) {
finish()
}
}
NetServiceDelegate(netService: self, success: success)
self.resolveWithTimeout(timeout)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment