1.NSArray中的containsObject的用法

NSMutableArray *array=[NSMutableArray array];

if(![array containsObject:[NSNumber numberWithInt:3]]){//判断数组中是否有3这个元素

[array addObject:[NSNumber numberWithInt:3]];//没有元素的话添加

}

if(![array containsObject:[NSNumber numberWithInt:4]]){//判断数组中是否有4这个元素

[array addObject:[NSNumber numberWithInt:4]];

}

if(![array containsObject:[NSNumber numberWithInt:3]]){

[array addObject:[NSNumber numberWithInt:3]];

}

NSLog(@"%@",array);//3,4

最后一个3没有加进去,containsOjbect是不是挺神奇的,

2.可是我们要用自定义的类呢,你就会发现containsObject不顶用了,这个时候我们必须重写父类的方法

-(BOOL)isEqual:(id)object

为什么呢,因为containsOjbect是按地址进行判断的,比如我们建一个Person类,添加一个name属性

-(BOOL)isEqual:(id)object{

if(self==object){

return YES;

}

Person *p=(Person *)object;

if([self.name isEqualToString:p.name]){

return YES;

}

return NO;

}

这样数组里有的话就不会被重复添加了

NSArray的containsObject漏洞的更多相关文章

  1. iOS性能优化-数组、字典便利时间复杂

    上图是几种时间复杂度的关系,性能优化一定程度上是为了降低程序执行效率减低时间复杂度. 如下是几种时间复杂度的实例: O(1) return array[index] == value; 复制代码 O( ...

  2. iOS NSArray数组过滤

    需求:在一个数组里面,将在这个数组中的并且在另一个数组里面的元素过滤掉. 即:在一个数组dataArray里面,将在dataArray数组中的并且在filteredArray数组里面的元素过滤掉. / ...

  3. Fouandation(NSString ,NSArray,NSDictionary,NSSet) 中常见的理解错误区

    Fouandation 中常见的理解错误区 1.NSString //快速创建(实例和类方法) 存放的地址是 常量区 NSString * string1 = [NSString alloc]init ...

  4. 一些NSArray,NSDictionary,NSSet相关的算法知识

    iOS编程当中的几个集合类:NSArray,NSDictionary,NSSet以及对应的Mutable版本,应该所有人都用过.只是简单使用的话,相信没人会用错,但要做到高效(时间复杂度)精确(业务准 ...

  5. NSArray

    版权声明:本文为博主原创文章,未经博主允许不得转载. 数组是一个元素有序.元素可重复的集合,在iOS编程中经常被用到,而Foundation框架提供了数组对象.数组对象包括不可修改的数组对象NSArr ...

  6. Objective - C NSArray不可变数组和NSMutableArray可变数组

    OC中存储数据最常用 的两个容器就是数组和字典,而作为最常用的,应该了解这所有的特点,及用法. OC中的数组是一个容量,有序的管理了一系列元素,并且存放在数组里的元素,必须是对象类型. 不可变数组,见 ...

  7. Foundation ----->NSArray

    .数组的创建     //注意:在OC的数组中,只能够存放对象 //    NSArray *array = [NSArray arrayWithObject:12];错误          //创建 ...

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

    iOS学习(OC语言)知识点整理 一.OC中的数组 1)数组:也是一个对象,数组中存放的是对象的地址,可以存放任意类型对象的地址,只能是对象不能是具体的数值,数组是有序的,      可以存放重复的元 ...

  9. objective-c系列-NSArray

    OC数组NSArray 对比         c数组              和       oc数组对象(指针) 定义         int array[10];              NS ...

随机推荐

  1. cuckoo相关

    Q1:pefile is out of date 现象:ERROR: Your version of pefile is out of date.  Please update to the late ...

  2. openstack添加数据库

    输入:neutron-db-manage revision -m "表的名称"        neutron-db-manage upgrade head 如果遇到版本名找不到的情 ...

  3. sql 查看语句的性能

    SET STATISTICS TIME:看cpu时间   SET STATISTICS IO:关注scan count(计数)------查询读取的表数量:logical read( 逻辑读)次数

  4. ARM驱动调试方法、思路总结、笔记

    驱动程序的调试一. 打印: prink, 自制proc文件UBOOT传入console=ttySAC0 console=tty11. 内核处理UBOOT传入的参数console_setup add_p ...

  5. prototype属性的理解

    1.对象:对象是JS的基本数据类型(原始类型(数字.字符串和布尔值),对象类型).对象是一种复合值:它将很多值(原始值或者其他对象)聚合在一起,可通过名字访问这些值. 2.三类JS对象和两类属性: 内 ...

  6. SBT详解

    文章转载自http://beike.iteye.com/blog/1575296 SBT = (not so) Simple Build Tool,是scala的构建工具,与java的maven地位相 ...

  7. bzoj1417: Pku3156 Interconnect

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1417 1417: Pku3156 Interconnect Time Limit: 10 ...

  8. putty 窗口管理

    (一个用户,可以有多个小窗口) screen -S xxx   保存用户名(用户丢失后新保存) screen -ls 查询现有的screen screen -r zxc 恢复 ctrl+a+c 新增小 ...

  9. 【转】Informix数据表结构分析资料整理之约束查询代码

    原文地址:http://blog.csdn.net/xqf222/article/details/6271219 本文主要整理了Informix数据库相关系统表数据,已分析整个Informix数据表结 ...

  10. js刷新页面不回到顶部

    今天遇到刷新页面不回到顶部的需求 window.location.reload();方法已经解决了问题,但是ie8不支持,后来采用的是锚点这个方法 window.location = '/plan/g ...