티스토리 뷰

반응형

 

 

iOS개발을 하다보면 빼놓을 수 없는 클래스 개념이 있습니다. 바로 Objective-C 클래스들의 최상위 루트 클래스인 NSObject인데요. Cocoa, Cocoa Touch Framework의 최상위 루트 클래스이기도 하죠. 이 NSObject가 채택하고 있는 프로토콜이 있습니다.

오늘은 NSObject 클래스가 채택하는 NSObjectProtocol에 대해서 가볍게 알아보겠습니다.

 

 


iOS NSObject가 채택하고있는 NSObjectProtocol란 무엇일까?

NSObject클래스는 Objective-C의 클래스라면 모두 상속받고 있는 핵심 루트 클래스인데요. 그러한 클래스가 채택하고 있는 프로토콜이라면 그 중요성은 더 말할 필요가 없을 것 같습니다.

개발자 문서를 보면, NSObjectProtocol은 모든 Objective-C 객체들의 기본이 되는 메서드의 그룹이 정의되어있다고 합니다. 또한 NSObjectProtocol이라는 이름 으로 Swift언어에도 import 되어있습니다.

 

 

NSObjectProtocol의 구현부에서 quick help로 설명을 다시한번 보겠습니다. NSObjectProtocol을 채택하고 있는 객체들은 일급객체여야하며 아래와 같은 기능을 수행할 수 있어야 합니다.

- Class이고, 상속 계층 내에서 Class의 일부가 될 수 있어야 한다.
- protocol을 준수해야 한다.
- 특정 메세지에 응답할 수 있는 능력이 있어야 한다.

Cocoa framework의 Root Class이기도 한 NSObject 또한 NSObjectProtocol을 준수하고 있으며, NSObject를 상속받은 모든 크래스들 또한 해당 Protocol에서 명시한 기능들을 갖게 됩니다.

NSObjectProtocol을 채택하고 있는 NSObject의 정의부분도 살짝 보겠습니다.

 

NSObject 클래스가 NSObjectProtocol을 준수하고 있는 것을 볼 수 있습니다. 이렇게 NSObjectProtocol을 준수하는 NSObject 클래스이기에 NSObjectProtocol에서 어떤 규약 정의가 있는지 알아볼 필요가 있을 것 같습니다.

 


NSObjectProtocol과 관련된 기능들

첫번째로 클래스의 식별 기능이 포함되는데 super class를 확인하기 위해 사용하는 superclass 멤버가 있네요.

두번째로는 객체들을 식별 및 비교할때에도 사용됩니다. 같은 객체인지 비교하거나 해시 테이블 구조 내의 테이블 주소로 사용될 수 있는 Integer값을 반환 받거나, 자기자신을 반환하는 등의 기능 등이 있습니다.

 

 

세번쨰로 객체 상속, 행위, 준수 등을 체크할때에도 사용됩니다.

- isKind를 통해 현재 상속받은 클래스 종류를 확인할 수 있습니다.
- isMember를 통해 해당 클래스의 인스턴스인지 확인할 수 있습니다.
- responds를 통해 클래스가 사용할 수 있는 selector여부를 확인 가능합니다.
- conforms를 통해 클래스가 준수하고 있는 프로토콜인지 확인할 수 있습니다.

 

 

네번째는 객체를 묘사하는 기능입니다. description, debugDescription등을 사용 가능합니다.

다섯번째는 클래스의 메서드 호출을 다른 방식으로 사용 가능하게 해주는 메세지 전송 기능, 프록시 식별 기능 등이 정의되어있습니다.

 

 


오늘은 Cocoa, Cocoa Touch Framework의, Objective-C의 최상위 루트 클래스, NSObject가 채택하고 있는 NSObjectProtocol에 대한 개발자 문서와 정의부 코드를 가볍게 보았습니다.

많은 피드백, 의견 환영합니다. 감사합니다. 

 

 

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함