iOS NSMutableArray "removeObjectIdenticalTo" vs "removeObject"
2015-11-19 20:08
579 查看
NSMutableArray 有多种可以删除元素的方法。
其中 removeObject,removeObjectIdenticalTo 这两个方法是有区别的。
removeObject:anObject 删除所有与 anObject “isEquals” 的元素。
removeObjectIdenticalTo:anObject 删除所有与 anObject 地址相同(同一个对象)的元素。
举个例子:
数组中包含多个 NSString,其中有两个属于不同对象的,值均为 “Hello” 的元素。
调用 removeObject 将删除所有值为 “Hello” 的元素。
调用 removeObjectIdenticalTo 只删除与其地址相同的对象。
此例子中,只有 str3 被删除。
如果把 removeObjectIdenticalTo 换为 removeObject,str3 和 str4 均被删除。
其中 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 均被删除。
相关文章推荐
- iOS---NSUserDefaults插入报错attempt to insert non-property list object
- java + Object C AES加密
- Objective-C Runtime 运行时之三:方法与消息
- Objective-C Runtime 运行时之二:成员变量与属性
- Objective-C Runtime 运行时之一:类与对象
- Object-c编码规范的几点建议
- java.lang.Thread.sleep()方法和java.lang.Object.wait()方法的区别--有道笔记整理
- 《jQuery源码解析》读书笔记(第4章:异步队列deferred object)
- OpenGL.Vertex Array Object (VAO).
- 学习笔记:创建JSONObject对象:
- 解决用easygui是出现Attribute: 'module' object has no attribute 'msgbox'
- Objective-C Autorelease Pool 的实现原理
- Objective-C 编码建议<转载>
- WCF:Maximum number of items that can be serialized or deserialized in an object graph is '65536'.
- Android Activity如何保存和恢复Object
- 关于错误 libstdc++.so.6:cannot open shared object file 和 libstdc++.so.6: wrong ELF class 的解决和思考
- underscore源码解析(object)
- Bucket不为空,请检查该Bucket是否包含未删除的Object或者未成功的Multipart碎片
- 初学Objective-C
- Objective-C 编码建议