2012-10-23 2 views
3

ObjC로 일부 C++ 코드를 옮겨 쓰고 있습니다. 내가보고있는 연산자 ==()는 그것의 private 멤버를 하나씩 비교하고 그들이 모두 사실이라면 true를 반환합니다.C++에서 operator ==를 Objective-C로 변환

ObjC에서 연산자 ==()의 등가 구현은 무엇입니까? 검색에서

, 내가 ObjC에서 볼 :

  • -isEqual
  • -isEqualTo
  • -isLike
  • ==를 (? 내장 덮어 쓸 수 없습니다?)
  • 어떤 다른 사람을 내가 그리워?

이러한 방법에 대한 프로토콜은 무엇입니까? (깊거나 얕은 비교, 등 ...?) 모든 멤버를 비교하는 연산자 ==()를 대체 할 때 사용해야하는 것은 무엇입니까?

+0

'=='은 (는) 2 개체의 포인터 만 비교합니다. 그만큼 간단하고 무시할 수 없습니다. 자신의 클래스를 비교하기 위해 자신 만의 메소드를 만들어야합니다. – TheAmateurProgrammer

+1

여기 'isEqual :'과'hash'에 대한 논의가 있습니다 : http://stackoverflow.com/questions/1112373/implementing-hash-isequal-isequalto-for-objective-c-collections – Monolo

+0

@Monolo +1 유용한 링크 - ty – kfmfe04

답변

4

가능성이 있습니다. hash이 동일한 두 개의 오브젝트에 대해 동일한 값을 리턴하는지 확인하십시오.

실제로 비교할 프로토콜이 없습니다. 당신의 수업에 맞는 것은 무엇이든하십시오. operator==()에있는 모든 회원을 비교해 본다면 깊은 비교가 될 수 있으며 그렇습니다. isEqual:을 사용하십시오.

+0

ty - 허용됨 - 비교 프로토콜이 없다는 것이 너무 나쁨 - 너무 많은 다른 프로토콜을 사용하면 모호함/혼동을 일으킬 수 있습니다. – kfmfe04