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가 루트 클래스에서 수행되므로 예측이 불가능하게 되어 루트

클래스에 카테고리 사용은 바람직하지 못하다.

Posted by 김반장78
,