Цель C, как и C, не имеет пространств имен. Это означает, что если кто-то уже определил функцию foo
или класс Bar
, он должен быть глобально уникальным, и вы не можете определить его. Это может привести к большому количеству головной боли, когда у вас есть код, а затем добавлена еще одна библиотека, и вдруг что-то ломается в странных местах.
Там является ориентиром , представленный Apple , для этого в Программирование с Objective C: Конвенции раздел библиотеки для разработчиков IOS:
Некоторые имена должны быть уникальными в вашем приложении
Каждый раз, когда вы создаете новый тип, символ или идентификатор, вы должны сначала рассмотреть область, в которой имя должно быть уникальным. Иногда этой областью может быть все приложение, включая связанные с ним структуры; иногда область действия ограничена только классом включения или даже блоком кода.
Имена классов должны быть уникальными во всем приложении
Классы Objective-C должны иметь уникальные имена не только в коде, который вы пишете в проекте, но и в любых фреймворках или пакетах, которые вы можете включить. В качестве примера, вам следует избегать использования общих имен классов, таких как ViewController или TextParser, поскольку возможно, что среда, которую вы включаете в свое приложение, может не соответствовать соглашениям и создавать классы с одинаковыми именами.
Чтобы сохранить имена классов уникальными, принято использовать префиксы для всех классов. Вы заметили, что имена классов Cocoa и Cocoa Touch обычно начинаются с NS или UI. Подобные двухбуквенные префиксы зарезервированы Apple для использования в классах фреймворка. Когда вы узнаете больше о Cocoa и Cocoa Touch, вы столкнетесь с множеством других префиксов, которые относятся к конкретным средам:
...
Ваши собственные классы должны использовать трехбуквенные префиксы. Они могут относиться к комбинации названия вашей компании и вашего приложения или даже к определенному компоненту в вашем приложении. Например, если ваша компания называлась Whispering Oak и вы разрабатывали игру под названием Zebra Surprise, вы можете выбрать WZS или WOZ в качестве префикса своего класса.
Таким образом, библиотеки, о которых вы упоминаете, нарушают это соглашение, но в центре проблемы отсутствия пространства имен в Objective C.
Дальнейшее чтение
пространства имен NSHipster
Каков наилучший способ решить коллизию пространства имен Objective-C?
Как можно использовать пространства имен в коде Objective-C iOS?
;-)