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;