Objective-C基础】 isEqual ,isEqualToString , == 三者的区别
来源:互联网 发布:人民网络大学 编辑:程序博客网 时间:2024/06/05 06:00
原文:http://www.cnblogs.com/skyming/p/3485605.html
首先 OC中的对象都是用指针表示,方法的调用是基于消息机制实现,== 比较的自然是指针指向的地址
然后 说下 isEqual 和 isEqualToString 的区别
IsEqual 是 NSObject 的方法 ,而 isEqualToString 是 NSString 的方法
因此从继承关系角度来说isEqualToString 是 isEqual 的衍生方法
首先贴个苹果官方重写isEqual 的demo
- (BOOL)isEqual:(id)other {if (other == self)return YES;if (!other || ![other isKindOfClass:[self class]])return NO;return [self isEqualToWidget:other];}- (BOOL)isEqualToWidget:(MyWidget *)aWidget {if (self == aWidget)return YES;if (![(id)[self name] isEqual:[aWidget name]])return NO;if (![[self data] isEqualToData:[aWidget data]])return NO;return YES;}
简单说一下:
1、首先都会判断 指针是否相等 ,相等直接返回YES,
2、不相等再判断是否是同类对象或非空,空或非同类对象直接返回NO,
3、而后依次判断对象对应的属性是否相等,若均相等,返回YES
这样就不难理解 isEqualToString 的实现内部的了
最后解释 HashCode 和 isEqual 的关系
hash和isEqual:方法都在NSObject协议中声明,且彼此关系紧密。实现hash方法必须返回一个整型数(NSInterger),作为哈希表结构中的表地址。
两个对象相等(isEqual:方法的判断结果)意味着它们有相同的哈希值。如果哈希值相同,两个对象不一定相等。
如果您的对象可能被包含在象NSSet这样的集合中,则需要定义hash方法,比如UIWebView
并确保该方法在两个对象相等的时候返回相同的哈希值。
0 0
- Objective-C基础】 isEqual ,isEqualToString , == 三者的区别
- Objective-c中 isEqual ,isEqualToString , == 三者的区别
- Objective-C语法之isEqual ,isEqualToString , == 三者的区别
- Objective-c中 isEqual ,isEqualToString , == 三者的区别
- Objective-C中NSString的isEqual、isEqualToString、== 区别
- Objective-C中NSString的isEqual、isEqualToString、== 区别
- isEqual,isEqualToString,== 三者的区别
- ctive-c中 isEqual ,isEqualToString , == 三者的区别
- Object中 isequal,isEqualToString,!=的区别
- Objective-C中 ==、isEqual、isEqualToString判断字符串相等
- iOS中的相等== isEqual isEqualToString
- Objective-C中关于isEqual与“==”的区别解析
- iOS开发:==、isEqual与isEqualToString判断是否相等
- == isEqual 区别
- iOS 浅析 isEqualToString和==之间的区别
- iOS isEqualToString和== 区别
- ObjC中isEqual与==的区别
- ObjC中isEqual与==的区别
- Python使用Redis实现作业调度系统(超简单)
- HDU 3577 线段树区间更新
- 【latex】LATEX微调公式间距
- JAVA 使用Interface 实现自己的事件监听
- eclipse里svn中的基本操作
- Objective-C基础】 isEqual ,isEqualToString , == 三者的区别
- scala隐式转换
- 您已购买此 App 内购买项目。此项目将免费恢复。This In-App purchase has already been bought.It will be restored for free.
- 玩转html5<canvas>画图
- 模板方法模式(Template Method Pattern
- document.getElementById 不能获取值的问题
- 【Objective-C基础】类别Category
- Java线程面试题 Top 50
- @SuppressWarnings(unchecked)作用解释.doc