我现在正在编写一个Bonjour服务监听器类,根据文档here:
目前,它似乎有效,我可以正确接收“netServiceBrowserWillSearch:”和“didFindService:moreComing:”。然而,经过漫长的等待,我无法收到“netServiceBrowserDidStopSearch:”或“netServiceBrowser:didNotSearch:”。因此,我不知道我的委托(delegate)类现在是停止显示某些 UI 的适当时间。
有人对此有什么想法吗?谢谢。
最佳答案
NSNetServiceBrowser 不会停止浏览(并调用 -netServiceBrowserDidStopSearch: 委托(delegate)方法),除非您通过调用 -stop
明确告知它。找到初始服务后,当新的匹配服务添加或旧服务消失时,它会继续通知您。
您如何处理此问题取决于您希望应用程序的行为方式。如果您有一个持续显示可用服务的窗口(例如 iChat 中的 Bonjour 窗口),那么最好让它继续,并不断更新列表以响应委托(delegate)消息。如果您有一个更像是填充的对话框,然后在用户做出选择后消失(例如,像系统“添加打印机...”对话框),那么您希望在显示时保持浏览器运行,然后调用 -stop
一旦用户关闭它。如果您只是等待查找一项特定服务,那么您可以在找到并解决该服务后调用 -stop
。
关于cocoa - netServiceBrowser DidStop 搜索未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2696049/