Protocol Object
- runtime시에 protocol이 어떻게 표현되는지에 대해서 알아보자. 클래스는 class object로, 함수는 selector로 runtime시에 나타나듯이, formal protocol은 Protocol 클래스로 나타난다. protocol을 다루는 코드는 Protocol 오브젝트를 참조해야만 한다.
- protocol 객체를 참조하는 방법은 @protocol() 디렉티브를 이용해서 한다.
Protocol *counter = @protocol(ReferenceCounting);
- class 이름과 다른 점은, protocol 이름은 @protoco()안에 있는 것을 제외하고는, 어떤 한 객체를 의미하지는 않는다.
-> ReferenceCounting 만으로는 아무것도 가리키지 않는다는 듯. class일 경우엔 class 이름만으로 class object를 가리키지만.
- 컴파일러는 다음의 경우에만 protocol 객체를 만든다.
> 클래스에 의해서 adopt 되었을 때,
> 소스코드에서 다른 어딘가를 참조했을 때 ( @protoco()을 사용해서.. )
즉 선언은 되었지만 사용되지 않는 protocol은 runtime시에 protocol 객체로 나타나지 않는다.
- runtime시에 protocol이 어떻게 표현되는지에 대해서 알아보자. 클래스는 class object로, 함수는 selector로 runtime시에 나타나듯이, formal protocol은 Protocol 클래스로 나타난다. protocol을 다루는 코드는 Protocol 오브젝트를 참조해야만 한다.
- protocol 객체를 참조하는 방법은 @protocol() 디렉티브를 이용해서 한다.
Protocol *counter = @protocol(ReferenceCounting);
- class 이름과 다른 점은, protocol 이름은 @protoco()안에 있는 것을 제외하고는, 어떤 한 객체를 의미하지는 않는다.
-> ReferenceCounting 만으로는 아무것도 가리키지 않는다는 듯. class일 경우엔 class 이름만으로 class object를 가리키지만.
- 컴파일러는 다음의 경우에만 protocol 객체를 만든다.
> 클래스에 의해서 adopt 되었을 때,
> 소스코드에서 다른 어딘가를 참조했을 때 ( @protoco()을 사용해서.. )
즉 선언은 되었지만 사용되지 않는 protocol은 runtime시에 protocol 객체로 나타나지 않는다.
'프로그래밍 > iPhone Dev' 카테고리의 다른 글
[Objective C] 프로토콜을 준수한다는 것 (0) | 2009.11.26 |
---|---|
[Objective C] Protocol의 종류 : Formal Protocol (0) | 2009.11.24 |
[Objective C] Protocol의 종류 : Informal Protocol (0) | 2009.11.24 |
[Objective C] Protocol 이용 : 비계층적 유사성(Non-Hierarchical Similarities) (0) | 2009.11.24 |
[Objective C] Protocol 이용 : 익명의 객체를 위한 Interface를 선언하기 (0) | 2009.11.23 |