美文网首页面试
从containsObject浅谈到对象地址、isEqual和h

从containsObject浅谈到对象地址、isEqual和h

作者: 漂泊的飞鸟 | 来源:发表于2017-08-17 16:47 被阅读0次

近期修正一个上个程序员写的代码bug,用到了containsObject这个方法,这是个数组对象方法,深究了一下,大概有以下几种用法,肯定有似懂非懂的同学,容我来解惑一二。

1、检测数组中是否存在某个字符串

 NSString *str1 = @"123";
 NSString *str2 = @"345";
 NSMutableString *str3 = [NSMutableString stringWithString:@"123"];
 NSArray *strArray = @[str1, str2, str3];
 NSMutableArray *testStrArray = [NSMutableArray array];
for (int i = 0; i<3; i++) {
    [testStrArray containsObject:strArray[i]]?:[testStrArray addObject:strArray[i]];
}

2、

LLZLabel *l1 = [[LLZLabel alloc] init];
l1.text = @"llz";
LLZLabel *l2 = [[LLZLabel alloc] init];
l2.text = @"llz";
NSUInteger sss1 = l1.hash;
NSLog(@"%zd",sss1);
NSUInteger sss2 = l2.hash;
NSLog(@"%zd",sss2);
NSMutableArray *testStrArray = [NSMutableArray array];
[testStrArray addObject:l1];
BOOL qqq = [testStrArray containsObject:l2];
NSLog(qqq?@"YES":@"NO");

每个对象都有一个hash值,一般来说不同对象就算内容一样,hash值也是不同的。但不同地址的字符串,如果内容一致,那么hash值也是一样的。而isEqual方法和containsObject方法比较的就是两个对象的hash值,通过上面的两个方法打印一下就能得出。(isEqual返回yes的情况说明两个对象的hash值相同,而两个对象的hash值相同并不能推导出isEqual返回yes)

相关文章

  • 从containsObject浅谈到对象地址、isEqual和h

    近期修正一个上个程序员写的代码bug,用到了containsObject这个方法,这是个数组对象方法,深究了一下,...

  • iOS补充知识

    1、Hash方法与isEqual 1.1、== 运算符判断对象内存地址是否相同 1.2、isequal判断对象是否...

  • Objective-C -- isEqual与hash

    为什么要有isEqual方法 对于对象类型, ==运算符比较的是对象的地址,即是否为同一对象。 对象地址相等不代表...

  • iOS 对象判断相等

    == isEqual 重写isEqual 为什么需要重写对象的hash值 参考

  • iOS入门小知识-拷贝

    深拷贝和浅拷贝 浅拷贝:只拷贝对象的地址,所拷贝出来的对象指针所指向的地址仍然是被拷贝对象的内存地址 深拷贝:真正...

  • 高效编写代码的方法(六):判断对象相等

    isEqual 比较对象是否相等,在OC中目前有两种方式:== 和 isEqual:方法。对于==方法,对于指针类...

  • 对象的克隆

    对象的克隆 对象地址的引用: 以上属于对象地址的引用: 一、对象的浅克隆 Person: Demo: 对象浅克隆要...

  • 一张图说明深拷贝,浅拷贝,strong,weak,指针概念

    if(obj == obj1)//比较这两个指针里面的对象地址 isEqual: 默认情况下是比较两个对象的内存地...

  • OC中对象是否相等判断

    OC中,==号比较两个对象,是比较两个对象的地址,而 isEqual方法,是比较两个对象的值是否相等。 比如,NS...

  • ###深拷贝和浅拷贝

    深拷贝和浅拷贝 浅拷贝 拷贝出来的地址和源对象的地址一样,意味着修改拷贝的对象会直接影响源对象 钱拷贝是指针拷贝 ...

网友评论

    本文标题:从containsObject浅谈到对象地址、isEqual和h

    本文链接:https://www.haomeiwen.com/subject/yxlnrxtx.html