我希望做这样的事情:
在 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 usingremoveObjectAtIndex:
. Thus, matches are determined on the basis of an object’s response to theisEqual:
message.
(为了完整起见,Apple 确实提供了一个通过地址删除对象的函数。这就是 removeObjectIdenticalTo:
。但是,这不是您想要的行为。只需使用 removeObject:
.)
引用资料:
关于ios - NetServiceBrowser 在删除时提供不同的 NetService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8470802/