【发布时间】:2012-06-27 09:24:57
【问题描述】:
我正在为我的自定义类实现 -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);
}
这似乎工作正常。这是解决平等的“标准”方式吗?对我来说似乎过于复杂。
【问题讨论】:
-
对我来说似乎过于复杂。我认为
#define解决方案实际上非常顺利:)
标签: objective-c equality