【概述】
做iOS開發(fā)的都知道:
<blockquote>
if(2 == a)榜聂,用來判斷值是否相等
[str1 isEqualToString:str2]搞疗,用來判斷字符串是否相等,</blockquote>
但是之前并沒有研究過须肆,它們具體都有什么區(qū)別匿乃,今天碰到了一個(gè)關(guān)于這個(gè)的bug,就來總結(jié)下豌汇。
</br>
【區(qū)別】
<blockquote>
OC中的對(duì)象幢炸,都是用指針表示
OC中方法的調(diào)用,是基于消息機(jī)制實(shí)現(xiàn)
</blockquote>
"==" / isEqualToString:
<blockquote>
"==" 拒贱,比較兩個(gè)指針的值
isEqualToString宛徊,比較兩個(gè)字符串是否相同
</blockquote>
"==" / isEqual:
<blockquote>
"==" ,是判斷兩個(gè)對(duì)象的引用(reference)是否一樣逻澳,也就是內(nèi)存地址是否一樣岩调。
isEqual ,判斷是一個(gè)類方法赡盘,判斷連個(gè)對(duì)象在類型和值上是否一樣号枕。
</blockquote>
is empty / isEqualToString
<blockquote>
[string isempty]判斷字符串是不是null
[string isEqualToString:@""]判斷是不是""
</blockquote>
isEqual / isEqualToString
<blockquote>
IsEqual 是 NSObject 的方法 ,而 isEqualToString 是 NSString 的方法
因此從繼承關(guān)系角度來說isEqualToString 是 isEqual 的衍生方法
</blockquote>
isEqual陨享,方法首先檢查指針的等同性葱淳,相等直接返回YES钝腺,
然后是類的等同性,空或非同類對(duì)象直接返回NO赞厕,
最后調(diào)用對(duì)象的比較器進(jìn)行比較艳狐。比較器的名稱指示出參與比較的對(duì)象的類名稱。若均相等皿桑,返回YESisEqualToString毫目,在比較對(duì)象都是字符串的前提下, 直接判斷字符串內(nèi)容诲侮,比較對(duì)象不是字符串镀虐,報(bào)錯(cuò)。
</br>
參考資料:
http://blog.csdn.net/jerryvon/article/details/8224634
http://mobile.51cto.com/iphone-280494.htm
http://stackoverflow.com/questions/1112373/implementing-hash-isequal-isequalto-for-objective-c-collections?rq=1
——————————— 【 MadeBy 紀(jì)寶寶 】 ———————————