OC NSArray的containsObject漏洞

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;

}

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

原文地址:https://www.cnblogs.com/hualuoshuijia/p/4973402.html