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. ARM裸板调试思路总结、笔记

    1. 点灯 2. 串口打印 3. JTAG调试器3.1 命令行调试 3.2 源码级别的调试前提a. 程序必须已经重定位好,位于它的链接地址a.1 如果程序的链接地址是SDRAM, 使用openocd初 ...

  2. Java多线程:线程同步与关键字synchronized

    一.同步的特性1. 不必同步类中所有的方法, 类可以同时拥有同步和非同步方法.2. 如果线程拥有同步和非同步方法, 则非同步方法可以被多个线程自由访问而不受锁的限制. 参见实验1:http://blo ...

  3. hdu1016

    #include <stdio.h>#include <string.h> int prime[38]={0,0,1,1,0,1,0,1,0,0,0,1,0,1,0,0,0,1 ...

  4. (sql占位符)Remember that ordinal parameters are 1-based!

    第一次出现是 将第一个问号(?)的位置设为1了,其实是从0开始的. 第二次出现是 sql中的 问号 写成了 中文输入法下的问号,这个太难发现了,搞了半天才发现.然后改成英式问号就可以了. 每天进步一点 ...

  5. @Transactional注解详解

    默认遇到throw new RuntimeException("...");会回滚   需要捕获的throw new Exception("...");不会回滚 ...

  6. Java 反射 设计模式 动态代理机制详解 [ 转载 ]

    Java 反射 设计模式 动态代理机制详解 [ 转载 ] @author 亦山 原文链接:http://blog.csdn.net/luanlouis/article/details/24589193 ...

  7. linux 查看日志

    第一步 :提交自己目录文件(先到自己目录下载最新文件-->合并-->提交到临时目录temp-->在提交到master总目录-->其他关联master远 程分支的目录.就可以pu ...

  8. Struts入门学习(一)

    刚开始学习框架的时候感觉很简单,都是用到javaEE的相关框架,自己就想研究源码,但是学了很久之后毫无头绪,所以还是扎扎实实学好Struts毕竟框架做起来要比自己写javaEE要简单,下面我们就来一步 ...

  9. netty初探(1)

    参考目录: 1. user-guide : http://netty.io/wiki/user-guide-for-4.x.html 2. demo: http://netty.io/wiki/ 3. ...

  10. ESFramework 通信框架安全机制的设计与实现

    在分布式通信系统中,安全无疑是非常重要的.ESFramework通信框架提供了哪些安全保障了?由于ESFramework通信框架是应用层的开发框架,那么本文我们只讨论ESFramework通信框架在应 ...