removeobject和removeobjectatindex之间的区别?

时间:2014-03-24 03:05:19

标签: ios cocoa-touch

我只是想知道removeobject和removeobjectatindex之间的区别。我理解removeobjectatindex删除数组的特定索引处的对象,但我不明白的是removeobject的作用。

4 个答案:

答案 0 :(得分:2)

-removeObject:将要从集合中删除的对象作为参数。

答案 1 :(得分:0)

removeObject 会从数组中删除该对象的所有匹配项。    删除对象方法内部使用两种方法。它使用indexOfObject:两个定位给定对象的索引。然后它使用removeObjectAtIndex:方法二只是删除那些对象。当您希望两个删除多个类似对象时,此方法很有用,否则您可以直接使用removeObjectAtIndex:方法。

答案 2 :(得分:0)

removeObjectAtIndex方法只会从数组中移除一个对象(在您指定的索引处)。

removeObject方法将删除通过isEqual测试的所有对象。这意味着可能会移除许多对象。它还意味着您希望删除的对象可能不会,具体取决于isEqual的实现方式。默认情况下,isEqual方法只比较指针(如果两个对象具有相同的地址,则它们相等)。一些课程,例如NSString,覆盖isEqual以进行更高级别的比较。所以removeObject有时候看起来有点气质。

来自removeObject

的班级参考
  

此方法使用indexOfObject:来查找匹配项,然后使用removeObjectAtIndex:删除它们。因此,匹配是根据对象对isEqual:消息的响应来确定的。如果数组不包含anObject,则该方法无效(尽管它会产生搜索内容的开销)。

答案 3 :(得分:0)

NSMutableArray *a=[[NSMutableArray alloc]initWithObjects:@"4",@"5",@"sad", nil];
[a removeObject:@"4"]; // here it will check whether array contains a variable 4 in the array if array has it it will remove that object.
NSLog(@"%@",a);

[a removeObjectAtIndex:0]; // this will remove object at index 0
NSLog(@"%@",a);

[a removeAllObjects]; // this will remove all objects in array
NSLog(@"%@",a);