개체의 동일성 비교는 언어의 중요한 요소입니다. Objective-C(이하 objc)는 기본적으로 C이기 때문에 비교 연산자는 수치 비교를 합니다. 따라서 포인터의 경우, 포인터 값 비교가 되므로, 개체 참조 비교가 됩니다.

하지만 OO개념에 따라, 동일성의 의미가 개체에 따라 달라질 수 있어야 하므로, 코코아에서는 프로토콜로 동일성 비교 기능을 제공하고 프레임워크 전체적으로 이 기능을 사용해 개체 스스로 동일성 비교를 수행할 수 있게 합니다. 이 기능은 isEqual 메서드로 제공되는데, 문서를 보면 isEqualTo라는 메서드도 있습니다. 둘의 차이는 무엇일까요?

http://www.mail-archive.com/cocoa-dev@lists.apple.com/msg18003.html

켄씨에 따르면, isEqual이 기본적으로 제공되는 의미상 개체 비교 기능이고, isEqualTo는 스크립팅 지원을 위한 것이라고 합니다. 스크립트용으로 별도의 의미상 비교를 수행할 수 있도록 말이죠.

두 메서드 다 기본적으로는 수치(포인터) 비교를 사용하나, 필요에 따라 오버라이드 할 수 있습니다. 코코아는 프레임워크 전반적인 비교 루틴에 이들을 사용하므로, 쉽게 의미상 비교를 오버라이드할 수 있습니다.

 

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>