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:];
[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 NSMutableArray "removeObjectIdenticalTo" vs "removeObject"的更多相关文章
- iOS: NSMutableArray的方法removeObject:inRange:
- (void)removeObject:(id)anObject inRange:(NSRange)aRange
- iOS NSMutableArray替换某个元素
A * a1 = [A new]; A * a2 = [A new]; A * a3 = [A new]; A * a4 = [A new]; NSMutableArray *arr = [[NSMu ...
- iOS NSMutableArray添加NSInteger元素
NSMutableArray *array = [[NSMutableArray alloc] init]; NSInteger num = 7; NSNumber *number = [NSNumb ...
- IOS - Objective-C NSArray和NSMutableArray的详解 使用
原文地址:http://blog.csdn.net/totogo2010/article/details/7729377 Objective-C的数组比C++,Java的数组强大在于,NSArray保 ...
- Objective-C中NSArray和NSMutableArray是如何使用的?
Objective-C的数组比C++,Java的数组强大在于,NSArray保存的对象可以是不同的对象.但只能保存对象,int ,char,double等基本数据类型不能直接保存,需要通过转换成对象才 ...
- Objective-C语法之NSArray和NSMutableArray
转自:http://www.cnblogs.com/stoic/archive/2012/07/09/2582773.html Objective-C的数组比C++,Java的数组强大在于,NSArr ...
- iOS性能优化-数组、字典便利时间复杂
上图是几种时间复杂度的关系,性能优化一定程度上是为了降低程序执行效率减低时间复杂度. 如下是几种时间复杂度的实例: O(1) return array[index] == value; 复制代码 O( ...
- iOS阶段学习第15天笔记(NSArray与NSMutableArray 数组)
iOS学习(OC语言)知识点整理 一.OC中的数组 1)数组:也是一个对象,数组中存放的是对象的地址,可以存放任意类型对象的地址,只能是对象不能是具体的数值,数组是有序的, 可以存放重复的元 ...
- IOS数组NSArray与NSMutableArray知识点
此文是对数组NSArray与NSMutableArray知识点的总结,主要是一些常见的操作,别外一些操作见其相应的文档,下面的代码部分还运用的第三方插件BlocksKit相结合: a:Foundati ...
随机推荐
- Sql语句在线转java bean https://www.bejson.com/othertools/sql2pojo/
https://www.bejson.com/othertools/sql2pojo/
- Mybatis之XML使用Enum枚举传递数据
在Mybatis中,处理枚举类的TypeHandler有两个: EnumTypeHandler: 用于保存枚举名 EnumOrdinalTypeHandler: 用于保存枚举的序号. 在实际项目中,以 ...
- 40. Combination Sum II (Back-Track)
Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in ...
- java代码实现网络远程开机
http://my.oschina.net/kingfire/blog/156764 概述 远程开机(Wake onLAN)是指通过网络实现对服务器或者pc启动运行,现在很多网卡都支持的这个功能. 其 ...
- 线程并发线程安全介绍及java.util.concurrent包下类介绍
线程Thread,在Java开发中多线程是必不可少的,但是真正能用好的并不多! 首先开启一个线程三种方式 ①new Thread(Runnable).start() ②thread.start(); ...
- mybatis开发Dao的Mapper动态代理方式
1. 开发规范Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体跟Dao原始方法中接口实现类的方法相 ...
- Java的类名与文件名必须一致
1.Java保存的文件名必须与类名一致:2.如果文件中只有一个类,文件名必须与类名一致:3.一个Java文件中只能有一个public类:4.如果文件中不止一个类,文件名必须与public类名一致:5. ...
- cxf的一些使用说明
/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agree ...
- http应答码
1xx - 信息提示 这些状态代码表示临时的响应.客户端在收到常规响应之前,应准备接收一个或多个 1xx 响应.· 100 - Continue 初始的请求已经接受,客户应当继续发送请求的其余部分.( ...
- 20169205实验四 Android程序设计
20169205实验四 Android程序设计 实验内容及步骤 (一)第一个android studio项目 android studio与eclipse的传统安卓开发有一些不同之处 android ...