내 맞춤 클래스에 -isEqual:
을 구현하고 있습니다. 평등은 속성 값, 즉 모든 속성이 같으면 객체는 동일하게 간주됩니다.속성 값을 기반으로 동등을 구현하는 방법은 무엇입니까?
- (BOOL) isEqual: (id) object
{
return [object class] == [self class]
&& [[object someProperty] isEqual:someProperty]
&& [[object otherProperty] isEqual:otherProperty];
}
을하지만 이것은, nil
속성 값, 즉 실패 함께 기존의 클래스 검사와 코드는 다음과 같습니다. nil
값을 가진 클래스의 두 객체는 someProperty
에 저장되며, 평등하길 바란다. 그래서 나는 다음 버전에 도착했다 :
- (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' 솔루션이 실제로 꽤 부드럽다고 생각한다. :) – Anne