ios - NetServiceBrowser 在删除时提供不同的 NetService

标签 ios nsnetservicebrowser

我希望做这样的事情:

netServiceBrowser:didFindService:moreComing:

[self.foundServices addObject:aNetService];

并且在 netServiceBrowser:didRemoveService:moreComing:

[self.foundServices removeObject:aNetService];

但是,返回的服务不会被 NetServiceBrowser 保留,因此 didRemoveService 中给出的服务与数组中的服务不是同一个对象。如何比较服务以确保我删除的服务是正确的?

最佳答案

您对此想得太多了,并在脑海中制造了一个不存在的问题。在传递给 didRemoveService: 的对象上使用 removeObject:removeObject: 根据对象对 isEqual: 的响应进行删除,而不是对象的地址或标识。所以这会起作用。

答案真的很简单:

[self.foundServices removeObject:aNetService];

Apple 对 removeObject 的描述: 解释了这一点:

This method uses indexOfObject: to locate matches and then removes them by using removeObjectAtIndex:. Thus, matches are determined on the basis of an object’s response to the isEqual: message.

(为了完整起见,Apple 确实提供了一个通过地址删除对象的函数。这就是 removeObjectIdenticalTo:。但是,这不是您想要的行为。只需使用 removeObject:.)

引用资料:

关于ios - NetServiceBrowser 在删除时提供不同的 NetService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8470802/

相关文章:

ios - Ionic iOS 构建成功但在尝试模拟应用程序时未出现在模拟器中

ios - 了解 bonjour 服务的状态

objective-c - 搜索时未调用 NSNetServiceBrowser 委托(delegate)

iphone - 为 iPad 复制目标,但 iPad 仍在运行 iPhone 目标

ios - 使用自定义地址在 MapView 中放置图钉

ios - 帧改变图像大小

ios - 苹果卓悦 : how can I tell which published service is my own?

ios - 连接后立即断开与服务器的连接

ios - 在 applicationDidEnterBackground 期间无法暂停音频