Почему у Objective-C нет пространств имен? - PullRequest
12 голосов
/ 29 ноября 2010

Почему у Objective-C нет пространств имен? Это кажется простой функцией, которая сделает некоторые имена классов более читабельными (AVMutableVideoCompositionLayerInstruction кто-нибудь?) И добавит префиксы к глупым буквам в имена классов. Это в основном из-за обратной совместимости? Труднее реализовать пространства имен, чем кажется?

Ответы [ 2 ]

11 голосов
/ 29 ноября 2010

Я не знаю ответа, но я подозреваю, что "это сложнее, чем кажется", возможно, так оно и есть.Вы должны будете ввести поддержку в компиляторе и компоновщике таким образом, чтобы не нарушать существующее программное обеспечение.И хотя это, очевидно, возможно (C ++ уже сделал это), предположительно, команда разработчиков инструментов имела более высокие приоритеты.например, в недавнем прошлом у нас была сборка мусора, появились GCD, блоки и Objective-C 2.0, поэтому мы не можем сказать, что они ничего не делали.

Поддержка пространства имен - это единственное, что мне очень нравитсясм. введено в Objective-C.

4 голосов
/ 29 ноября 2010

Я не знаю, хотите ли вы знать, есть ли какое-то официальное решение.Но пространство имен, как и многие другие функции, является выбором, сделанным автором языка.PHP только недавно представил Пространство имен, и, например, пакет использования Java, который действует как модули имен пространства или Python.

Я думаю, что в реализации пространства имен есть издержки, в основном потому, что Objective-c динамически типизирован, поэтому во время выполнения вынеобходимо выполнить некоторую проверку, чтобы разрешить пространство имен, разрешить поведение по умолчанию и т. д., и я могу предположить, что, поскольку Objective-c также используется во встроенной среде (AKA iPhone), скорость очень важна.

Вы 'я хочу обернуть все, что я сказал, в большое ИМХО; D

Обновление:

Я нашел это очень интересное обсуждение http://clang -developers.42468.n3.nabble.com / Добавление пространства имен в Objective-C-td1870848.html # a1872744 на веб-сайте разработчика clang, объясняющее причину, по которой реализация пространства имен в Obj-C определенно нетривиальна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...