이름 범위와 식별자
이름 범위와 식별자
Object Pascal에서는 각 식별자가 자신의 네임스페이스, 즉 유닛 안에서 유일해야 해요. Objective-C에서는 그럴 필요가 없어요. 각 타입 식별자는 자기 종류(클래스, 프로토콜, 카테고리, 필드, 메서드) 안에서만 유일하면 돼요. Objective-C의 기본 프로토콜과 클래스 정의에서 이를 확인할 수 있는데, 프로토콜과 클래스가 둘 다 NSObject라는 이름을 쓰거든요.
본문
Objective-C 클래스와 프로토콜을 가져올 때, 이 타입들의 Objective-Pascal 이름은 Object Pascal 규칙을 따라야 해요. 그래서 서로 구별되는 이름이어야 하죠. 마찬가지로, Objective-C에서는 유효한 식별자가 Object Pascal에서는 예약어일 수도 있어요. 그런 이름들도 가져올 때 반드시 바꿔줘야 해요.
이를 가능하게 하기 위해, external과 message 수식어는 이름을 지정하게 해줘요. 그 이름이 바로 Objective-C에 존재하는 타입 또는 메서드의 이름이에요.
NSObjectProtocol = objcprotocol external name 'NSObject'
function _class: pobjc_class; message name 'class';
end;
NSObject = objcclass external (NSObjectProtocol)
function _class: pobjc_class;
class function classClass: pobjc_class; message 'class';
end;
더 알아보기
- 네임스페이스 규칙이 실제로 어떻게 적용되는지는 정식 선언 섹션에서 확인할 수 있어요.
external/message수식어의 문법은 Objective-C 클래스 선언에서 다뤄요.