nsstring *foo = @"badger 123";
nsstring *bar = [nsstringstringwithformat:@"badger %i", 123];
bool eauala = (foo == bar); // no
bool equalb = [foo isequal: bar]; // yes
bool equalc = [foo isequaltostring: bar]; // yes
複製**
區別:
-(bool)isequal:(id)object;
-(nsuinterger)hash;
複製**
nsobject物件中這兩個方法的預設實現是:當且僅當「指標值」相等時,這兩個物件才相等。
eocperson類的自定義覆寫
-(bool)isequal:(id)object
/// 推薦hash方法的寫法. yyasynclayer也是這種寫法。
-(nsuinteger)hash
複製**
無需檢測引數型別,**如下
// 覆寫isequal方法
-(bool)isequal:(id)objectelse
}-(bool)isequaltoperson:(eocperson*)otherperson
... 其他屬性判斷
return yes;
}複製**
nsarray的深度等同性判定,特定類的主鍵字段判定。
某個物件放入collection之後就不應該在改變雜湊碼。collection會把各個物件按照其雜湊碼分裝到不同的「箱子陣列」中。
iOS理解「物件等同性」這一概念
前言 最近看了一道題 nsstring s1 hello world nsstring s2 hello world 請問 s1 s2的返回值是yes還是no?相信很多童鞋的答案都是no,可能大家認為s1 s2兩個物件的位址不同,但是事實真的如此麼?為此特意寫了乙個demo來印證下 import i...
第八條 理解「物件等同性」這一概念
isequaltostring 比isequal 快,因為後者還要之行額外的步驟,因為它不知道受檢測的物件型別。nsobject協議中有連個用於判斷等同性的關鍵方法 bool isequal id object nsuinterger hash 要點 若想檢測物件的等同性,請提供 isequal 於...
理解「屬性」這一概念
要理解好 屬性 這一概念,我覺得需要把以下幾個問題弄明白 1 例項變數與public protected private 2 例項變數的繼承性 3 屬性擺放的位置,比如宣告檔案 實現檔案 匿名分類宣告檔案等 4 屬性與例項變數的關係 5 使用屬性還是使用例項變數 6 屬性與setter getter...