NSMutableArray调用removeObject方法删除NSDictionary对象时遇到的问题

在写代码进行数组操作的时候遇到的问题:

定义了一个NSMutableArray的数组用来存储NSDictionary的对象,每次存储一个NSDictionary对象时都是重新分配的一块儿内存,插入到数组中的第一个,然后余下的index中遍历数组,若发现有与新插入的NSDictionary对象相同的对象,则删除该对象。删除时使用的是removeObject函数,结果发现,执行一次删除操作,却把要删除的和新插入的两个对象都删除了,明明两个对象时不同的内存地址,小郁闷了会儿。

于是,查了NSMutableArray的sdk,如下:

NSMutableArray的removeObject:(id)anObject方法会根据对象的isEqual:方法遍历整个数组找到与anObject的匹配的所有元素,然后调用removeObjectAtIndex:方法删除所有匹配的元素。

又查了NSDictionary的isEqual:方法,发现NSDictionary本身实现了这个方法,根据dictionary中的key-value值来判断,也就是根据对象的内容而不是内存地址来判等的,我却一直以为只有NSString重写isEqual:方法,想当然了。在NSObject的isEqual:方法描述中发现NSDictionary NSString NSArray NSData方法都实现了这个方法。

原因找到了,写下来谨记。

转载于:https://www.cnblogs.com/zengheng/archive/2012/10/15/2724155.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值