2
我爲自定義班級實施-isEqual:
。平等基於屬性值,即。如果所有屬性都相同,則認爲這些對象是相等的。再加上傳統的階級檢查代碼如下所示:如何基於屬性值實現相等性?
- (BOOL) isEqual: (id) object
{
return [object class] == [self class]
&& [[object someProperty] isEqual:someProperty]
&& [[object otherProperty] isEqual:otherProperty];
}
但失敗了nil
屬性值,即。存儲在someProperty
中的nil
值中的兩個對象被認爲是不相等的,但我希望它們相等。因此,我到了以下版本:
- (BOOL) isEqual: (id) object
{
#define equals(a, b) ((a == b) || ([a isEqual:b]))
return equals([object class], [self class])
&& equals([object someProperty], someProperty)
&& equals([object otherProperty], otherProperty);
}
這似乎工作正常。這是解決平等的「標準」方式嗎?對我來說似乎過於複雜。
_Seems對我來說過於複雜__我認爲'#define'解決方案實際上非常流暢:) – Anne