我正在使用 NetServiceBrowser 在我当前的网络中激活搜索服务,但我遇到了问题。当服务被激活时,服务会正确地找到这些并停止搜索,但在另一种情况下,当没有找到任何服务时,NetServiceBrowser 永远不会停止搜索。我可以调用带超时的搜索方法吗?
代码:
var _netServiceBrowser : NetServiceBrowser?
self._netServiceBrowser = NetServiceBrowser()
self._netServiceBrowser?.delegate = self
self._netServiceBrowser?.searchForServices(ofType:"_http._tcp", inDomain:"local.")
//...
//TODO
//...
self._netServiceBrowser.stop()
当收到所有数据时,我会停止 NetServiceBrowser,但如果没有检测到任何服务,则永远不会调用任何回调,因为我无法停止此操作
谢谢:)
解决方案
我找到了一个解决方案,我加入了一个延迟函数
func delay(_ delay:Double, closure:@escaping ()->()) {
let when = DispatchTime.now() + delay
DispatchQueue.main.asyncAfter(deadline: when, execute: closure)
}
delay(2.0, closure: {self._netServiceBrowser.stop()})
最佳答案
我找到了一个解决方案,我包含了一个延迟函数
func delay(_ delay:Double, closure:@escaping ()->()) {
let when = DispatchTime.now() + delay
DispatchQueue.main.asyncAfter(deadline: when, execute: closure)
}
delay(2.0, closure: {self._netServiceBrowser.stop()})
我在问题的末尾添加了这个
关于iOS Bonjour Swift 3 搜索永不停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42717027/