u 카테고리와 확장
n 의미
기본은 수직상속만 가능, 메소드를 추가해야할 경우 수직상속
카테고리를 사용함으로서 메소드의 수평적 상속이 가능
소스를 가지고 있는 않은 클래스에도 추가할 수 있음
카테고리를 사용해서 클래스의 implementation을 여러 파일로 쪼갤 수 있음
선언과 구현이 분리되어 있고, 클래스에 종속되어 있지 않음
n Adding Methods to Classes
카테고리가 클래스에 추가한 method들은 그 클래스의 subclass에 의해 상속
#import "ClassName.h" @interface ClassName ( CategoryName ) // method declarations
@end |
-특징
파일명이 ClassName+CategoryName.m으로 됨
#import "ClassName+CategoryName.h" @implementation ClassName ( CategoryName ) // method definitions
@end |
오직 method만 추가할 수 있음
클래스 scope의 모든 instance variables(@private조차도)는 카테고리의 scope이므로
모두 접근이 가능
무한정 작성 가능
n How you Use Categories
다른 implementation에 의해 정의된 클래스들을 확장할 때
Cocoa frameworks에 정의된 클래스들에 method들을 추가할 때
subclass의 대안으로 쓰려고 할 때
새 클래스의 implementation을 몇 개의 소스 화일로 분배하려 할 때
informal protocol을 선언하기 위해
n Categories of the Root Class
super에 대한 message는 불가능
class object는 루트 클래스에 정의된 instance method를 수행할 수 있다
보통 class object는 class method만 수행하지만 루트 클래스에 정의된 instance method는
특별한 경우이다.
카테고리로 추가한 instance method가 루트 클래스에서 수행되므로 예측이 불가능하게 되어 루트
클래스에 카테고리 사용은 바람직하지 못하다.
'아이폰개발' 카테고리의 다른 글
[아이폰개발] Objective-C JSON 통신 모듈 (0) | 2010.12.29 |
---|---|
[아이폰개발] Objective-C 6.Associative References (0) | 2010.12.20 |
[아이폰개발] Objective-C 4.프로퍼티 (0) | 2010.12.17 |
[아이폰개발] Objective-C 3.프로토콜 (0) | 2010.12.16 |
[아이폰개발] Objective-C 2.오브젝트의 메모리 할당과 초기화 (0) | 2010.12.15 |