删除后,NetServiceBrowser会提供不同的NetService

Zeo*_*ite 3 ios nsnetservicebrowser

我希望做这样的事情:

netServiceBrowser:didFindService:moreComing:

[self.foundServices addObject:aNetService];
Run Code Online (Sandbox Code Playgroud)

并在 netServiceBrowser:didRemoveService:moreComing:

[self.foundServices removeObject:aNetService];
Run Code Online (Sandbox Code Playgroud)

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

Ste*_*her 5

你过度思考这个问题,并在脑海中创造一个不存在的问题.用于removeObject:传入的对象didRemoveService:.removeObject:根据对象的响应删除isEqual:,而不是对象的地址或标识.所以这将是有效的.

答案真的很简单:

[self.foundServices removeObject:aNetService];
Run Code Online (Sandbox Code Playgroud)

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

此方法用于indexOfObject:定位匹配,然后使用删除它们removeObjectAtIndex:.因此,匹配是基于对象对isEqual:消息的响应来确定的.

(为了完整起见,Apple 确实提供了一个按地址删除对象的功能.那就是removeObjectIdenticalTo:.但这不是你想要的行为.只需使用removeObject:.)

参考文献: