[Objective C] Category

프로그래밍/iPhone Dev 2009. 11. 18. 08:59 Posted by galad
Category

- Objective-C를 보자. B가 ClassC를 확장하는데 Category를 사용했고 그 카테고리 이름을 CategoryB라고 지었다고 하자. 그리고 A는 ClassC를 확장하는데 CategoryA라고 이름을 지었다고 하자. 수평적 확장으므로 레이어가 ClassA에서 두개밖에 없을 뿐 아니라, B가 추가한 부분이 A가 확장한 ClassC 클래스엔 들어 있지 않다!
아.. 얼마나 좋은가? 멋지지 않은가?
 -> Category를 쓰면 수평적 확장이 가능하단 얘기.
 즉, 
                  ClassA
                  I         I
       CategoryA    CategoryB

- 카테고리 안에 정의된 method는 ClassC의 원래 method의 이름과 같은게 있을 수도 있다. 이때는 기존의 것을 override하는 것이 된다!
하지만 이때는 상속 받은 것과 달리 기존의 것을 새로운 것이 invocation을 할 수가 없다.
그냥 완전히 새걸로 바꾸는 것이다. 이것은 장점이기도 하고 경우에 따라 단점이기도 하다.
 -> 같은 이름의 method로 override하면 완전히 대체하는 것이 된다...

- 같은 클래스에 대한 다른 카테고리에 있는 것을 override하는 것은 안된다.
 ->당연하겠지. 수평적 확장이니까.

- 기존의 클래스에 변수를 추가해야 할 경우엔?
 -> 상속을 써야함... Category는 method만 추가 가능.

'프로그래밍 > iPhone Dev' 카테고리의 다른 글

[Objective C] Protocol  (0) 2009.11.20
[Objective C] Root Class  (0) 2009.11.20
[Objective C] 15 NSDictionary  (0) 2009.11.13
[Objective C] 14 NSArray  (0) 2009.11.13
[Objective C] 13 Autorelease Pool  (1) 2009.11.13