11.7 Пространство имён и идентификаторы |
Вверх Предыдущий Следующий |
В Object Pascal, каждый идентификатор должен быть уникальным в пространство имен модуля. В Objective-C, это может быть не так, и каждый идентификатор типа должен быть уникальным только в своем роде: внутри классов, протоколов, категорий, полей или методов (имена, скажем, класса и протокола могут совпадать, но должны быть разными имена классов или протоколов). Это показано при определении базового протокола и класса Objective-C: и протокол и класс называется NSObject. При импорте классы и протоколы Objective-C в Objective-Pascal, имена Objective-Pascal типов должны соответствовать правилам Objective-Pascal, и поэтому должны иметь различные имена. Точно так же имена, которые являются допустимыми идентификаторами в Objective-C могут быть зарезервированными словами в Object Pascal. Они также должны быть переименованы при импорте. Для того, чтобы это стало возможным, модификаторы еxternal и 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; |