情况1:
if([someArray indexOfObject:someObject] != NSNotFound) [someArray removeObject:someObject];
案例2:
[someArray removeObject:someObject];
在情况2中,如果数组中不存在该对象,则不会发生任何事情.我的问题是,案例2是否更有效,因为在案例1中我必须搜索数组并查看它是否存在,如果存在,我将其删除,但我猜是removeObject:再次搜索数组宾语?
解决方法but I’m guessing removeObject: searches the array again for that object?
嗯,是的,它必须.没有找到它就无法在集合中找到对象.* The docs甚至这样说:
This method uses
indexOfObject:
to locate matches and then removes them by usingremoveObjectAtIndex:
. […] If the array does not containanObject
,the method has no effect (although it does incur the overhead of searching the contents).
您当然可以模仿框架并在搜索后立即使用removeObjectAtIndex:如果您愿意.
*这比它可能更快(最坏的是O(log(N))而不是O(N))因为NSArrays aren’t arrays.
总结以上是内存溢出为你收集整理的objective-c – 在删除对象之前,我应该检查一个对象是否存在吗?全部内容,希望文章能够帮你解决objective-c – 在删除对象之前,我应该检查一个对象是否存在吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)