iOS NSMutableArray "removeObjectIdenticalTo" vs "removeObject"

NSMutableArray 有多种可以删除元素的方法。

其中 removeObject,removeObjectIdenticalTo 这两个方法是有区别的。

[anArray removeObjectIdenticalTo:anObject];

removeObject:anObject 删除所有与 anObject “isEquals” 的元素。

removeObjectIdenticalTo:anObject 删除所有与 anObject 地址相同(同一个对象)的元素。

举个例子:

数组中包含多个 NSString,其中有两个属于不同对象的,值均为 “Hello” 的元素。

调用 removeObject 将删除所有值为 “Hello” 的元素。

调用 removeObjectIdenticalTo 只删除与其地址相同的对象。

NSString *str1 = [[NSString alloc] init];
NSString *str2 = [[NSString alloc] init];
NSString *str3 = [str1 stringByAppendingFormat:@"Hello"];
NSString *str4 = [str2 stringByAppendingFormat:@"Hello"];

NSMutableArray *muArray = [NSMutableArray arrayWithCapacity:6];
[muArray addObject:@"How are you"];
[muArray addObject:str3];
[muArray addObject:str4];
for (NSObject * object in muArray) {
    NSLog(@"item:%@", object);
}

if ([str3 isEqual:str4]) {
    NSLog(@"str1 isEqual str2");
}
if (str3  == str4) {
    NSLog(@"str1 == str2");
}
[muArray removeObjectIdenticalTo:str3];
for (NSObject * object in muArray) {
    NSLog(@"item:%@", object);
}

此例子中,只有 str3 被删除。

如果把 removeObjectIdenticalTo 换为 removeObject,str3 和 str4 均被删除。

时间: 2024-12-26 00:17:33

iOS NSMutableArray "removeObjectIdenticalTo" vs "removeObject"的相关文章

iOS: NSMutableArray的方法removeObject:inRange:

- (void)removeObject:(id)anObject inRange:(NSRange)aRange iOS: NSMutableArray的方法removeObject:inRange:

iOS NSMutableArray用法

#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) {     @autoreleasepool {         //NSMutableArray 可变数组 继承与 不可变NSArray         //NSMutableArray可以用NSArray 的所有方法         //创建一个可变数组对象         NSMutableArray *arr = [[NSMutableAr

iOS NSMutableArray添加NSInteger元素

NSMutableArray *array = [[NSMutableArray alloc] init]; NSInteger num = 7; NSNumber *number = [NSNumber numberWithInt:num]; [array addObject:number]; NSLog(@"Array %@",array);

Objective-C中NSArray和NSMutableArray是如何使用的?

Objective-C的数组比C++,Java的数组强大在于,NSArray保存的对象可以是不同的对象.但只能保存对象,int ,char,double等基本数据类型不能直接保存,需要通过转换成对象才能加入数组. 1.NSArray 不可变数组 [array count] : 数组的长度. [array objectAtIndex 0]: 传入数组脚标的id 得到数据对象. [arrayWithObjects; ...] :向数组对象初始化赋值.这里可以写任意对象的指针,结尾必须使用nil. #

IOS阶段学习第15天笔记(NSArray与NSMutableArray 数组)

IOS学习(OC语言)知识点整理 一.OC中的数组 1)数组:也是一个对象,数组中存放的是对象的地址,可以存放任意类型对象的地址,只能是对象不能是具体的数值,数组是有序的,      可以存放重复的元素,数组也分为不可变数组和可变数组.       1.不可变数组NSArray:初始化之后不能修改数组的内容       2.可变数组NSMutableArray:可以随时修改数组的内容(增加元素.删除元素.修改元素) 二.NSArray数组的操作 1)NSArray数组的创建 1.创建方法一:使用

iOS objective-c之-8:数组NSArray 可变数组-(NSMutableArray)

镔哥自己了一些数组方法,网上又查了些方法出来,应该是比较全面的. 下面的例子以 NSArray *array = [NSArray arrayWithObjects:@"wendy",@"andy",@"tom",@"jonery",@"stany", nil]; 1.获取数组中总共有多少个对象. - (NSUInteger)count; NSLog(@"%d",[array count

IOS开发之旅-IOS常用数据结构NSArray、NSMutableArray、NSDictionary、NSMutableDictionary介绍

NSArray NSArray基本用法 void arrayTest1() { //数组初始化最后必须以nil结尾,表示数组元素结束 NSArray *array1 = [[NSArray alloc]initWithObjects:@"item0",@"item1",@"item2",@"item3",@"item4",nil]; NSLog(@"%@",array1); /*( it

iOS开发之oc(十八)--Foundation(3)NSArray和NSMutableArray

NSArray :不可变数组 NSMutableArray : 可变数组 C语言数组:存放基本数据类型 OC数组:只能存放OC对象.不能存放非OC对象类型,比如int.struct.enum等 1.不可变数组的创建 void create() { /* int a = 5; int ages[10] = {1, 90, 89, 17}; // C数组 Person *p = [[Person alloc] init]; // OC数组(下面) Person *persons[5] = {p, [

IOS数组NSArray与NSMutableArray知识点

此文是对数组NSArray与NSMutableArray知识点的总结,主要是一些常见的操作,别外一些操作见其相应的文档,下面的代码部分还运用的第三方插件BlocksKit相结合: a:Foundation中数组(NSArray)是有序的对象集合 b:NSArray只能存储Objective-C的对象,而不能存储像int.float这些基本数据类型,但是Objective-C对C兼容,所以在Objective-C程序中,仍然可以使用C的数组来存储基本数据类型 c:NSArray一旦创建便不可以再对