isEqual和==区别
来源:互联网 发布:私有属性 js 分享 编辑:程序博客网 时间:2024/04/28 15:47
再看文档时留意到isEqual方法,但是我们比较的时候有时候就用==来比较,这2个有似乎没区别呢?网上有人说==来比较指针,isEqual是比较内容,其实这个话如果深究起来,并不是那么准确,我用代码测试了下:
NSString* str1=@"111"; NSString* str2=@"111"; if([str1 isEqual:str2]){ NSLog(@"isEqual is YES"); } if(str1==str2){ NSLog(@"== is YES"); } UIImage* img1=[UIImage imageNamed:@"img1"]; UIImage* img2=[UIImage imageNamed:@"img1"]; if([img1 isEqual:img2]){ NSLog(@"isEqual is YES"); } if(img1==img2){ NSLog(@"== is YES"); } UIImageView* imgv1=[[UIImageView alloc]initWithImage:img1]; UIImageView* imgv2=[[UIImageView alloc]initWithImage:img1]; if([imgv1 isEqual:imgv2]){ NSLog(@"isEqual is YES"); } if(imgv1==imgv2){ NSLog(@"== is YES"); }前2个比较NSString和UIImage,都返回YES,后面则没有返回YES.
总结如下:
1.isEqual应该是比较内容的指针,反映在hashcode上,内容相同,并不代表isEqual返回true,比如说UIImageView的内容都是img1,但是isEqual返回NO,所以要谨慎使用isEqual而是要使用衍生方法,比如说isEqualToString
2.如果UIImage没有创建成功,比如说图片没有,则返回nil,这个时候isEqual则返回NO,虽然hash值都是0
3.如果要改变默认方式,则实现isEqual:方法和hash方法。
- isEqual和==区别
- == isEqual 区别
- isequal 和startswith 使用
- isEqual
- isEqual
- 关于"=="和"isEqual"
- Object中 isequal,isEqualToString,!=的区别
- Ibatis中的isNotNull、isEqual、isEmpty的区别
- 重写isEqual方法和hash方法
- Objective-c 重写 isEqual 和 hash 方法
- OC中的==和isEqual方法
- 重写isEqual方法和hush方法
- 重写isEqual方法和hash方法
- ObjC中isEqual与==的区别
- ObjC中isEqual与==的区别
- Objective-C中NSString的isEqual、isEqualToString、== 区别
- ObjC中isEqual与==的区别
- Objective-C中NSString的isEqual、isEqualToString、== 区别
- Nov/26 fdisk -l information
- Linux下的线程
- JavaScript世界的一等公民 - 函数
- 第二课 jaxws-webservice编程
- 线程池概述
- isEqual和==区别
- Restricting Accessor Accessibility (C# Programming Guide)-属性访问操作符可访问性的限制
- WPF、Windows Forms和Silverlight间的联系和区别
- 旧工程适配iOS 6和iPhone 5的一些故事
- ExecutorService线程池
- 【php】按指定元素值去除数组元素之array_search函数的用法
- 编写KL变换的思路
- Ubuntu 硬盘”分区“图文教程(用于光盘,U盘安装Ubuntu)
- 内存映射