아이폰 개발을 처음 시작할때 Obejctive-C에 대해 공부하기 위해 언어관련 책을 뒤적거릴 적에 JAVA에는 없는 카테고리라는 것에 대한 설명을 보고 당췌 이해할 수 없어 미뤄뒀었는데 최근 여유가 좀 남아 다시 공부한 내용을 살짝 남겨둔다. 아주 살짝.
Obejctive-C의 카테고리란 대충 설명하자면 이미 선언된 클래스에 클래스를 수정하지 않고 메서드를 추가하는 기법이다. (멤버변수는 선언할 수 없다.)
어떻게 이런일이 가능한냐면 다 컴파일러 덕분이겠지 ㅡ.ㅡ
문법적 요소를 살펴보면 우선 인터페이스 선언은
@interface 클래스명 (카테고리이름)
로 하면 된다.
여기서 클래스명은 NSString과 같은 이미 선언 되어 있는(내가 만든 클래스도 가능하다.) 메서드를 추가할 클래스의 이름이고 카테고리 이름은 내가 정한 카테고리의 이름이다. [클래스명 (카테고리이름)]이부분은 절대 !! 이미 선언되어있지 않은 유일한 것이어야 한다. 일반적인 인터페이스 선언과 같아서 부모클래스를 누락했다고 생각할 수도 있겠는데 부모클래스선언은 하지 않는다.
카테고리의 구현부 선언은
@implementation 클래스명 (카테고리이름)
로 하면된다.
그외 나머지 문법적 요소는 일반 클래스와 같다. 다만 상속이 아님으로 오버라이딩 할경우 메서드가 재정의 됨에 유의 해야한다.
