10 ответов:
Это NeXTSTEP наследия.
исходный код для Cocoa фреймворков пришел из NeXTSTEP libraries Foundation и AppKit (эти имена все еще используются фреймворками Cocoa от Apple), а инженеры NextStep решили префиксировать свои символы NS.
поскольку Objective-C является расширением C и, следовательно, не имеет пространств имен, как в C++, символы должны иметь префикс с уникальным префиксом, чтобы они не сталкивались. Это особенно важно для символов, определенных в рамки.
Если вы пишете приложение, так что ваш код, скорее всего, когда-либо будет использовать ваши символы, вам не нужно беспокоиться об этом. Но если вы пишете фреймворк или библиотеку для использования другими, вы также должны префиксировать свои символы уникальным префиксом. у CocoaDev есть страница где многие разработчики в сообществе Cocoa перечислили свои" выбранные " префиксы. Вы также можете найти это так обсуждение полезная.
N eXTSТЭП или N eXTSTEP/SООН в зависимости от того, кого вы спрашиваете.
У Sun были довольно большие инвестиции в OpenStep на некоторое время. До того, как Солнце вошло в картину, большинство вещей в фундаменте, хотя тогда он не был известен как фундамент, было префиксом NX на NeXT, и когда-то незадолго до того, как Солнце вошло в картину, все было переименовано в NS. Элемент S скорее всего, тогда не было солнца, но после того, как Солнце вступило в общий консенсус, было то, что оно стояло за солнце, чтобы почтить их участие.
Я на самом деле была ссылка на это, но я не могу найти его прямо сейчас. Я обновлю сообщение, если / когда я найду его снова.
это наследство NextStep (= NS). Затем была компьютерная компания, которую Стив Джобс сформировал после того, как он ушел из Apple в 1985 году, а NextStep-это операционная система (основанная на UNIX) вместе с языком Obj-C и средой выполнения. Вместе с его библиотеками и инструментами, NextStep позже был переименован в OpenStep (который также был именем на API, который затем разрабатывался вместе с Sun), который, в свою очередь, позже стал Cocoa.
эти разные имена на самом деле довольно запутанные (тем более, что некоторые имена отличаются только тем, в каких символах верхний или нижний регистр..), попробуйте это для объяснения:
из документов разработчика Apple:
историческое Примечание: Если вам интересно, почему так много классов, с которыми вы сталкиваетесь, имеют префикс NS, это связано с прошлой историей Cocoa и Cocoa Touch. Cocoa начал свою жизнь как собранные фреймворки, используемые для создания приложений для операционной системы NeXTStep. Когда Apple приобрела NeXT еще в 1996 году, большая часть NeXTStep была включена в OS X, включая существующие имена классов. Cocoa Touch был представлен как эквивалент iOS Какао; некоторые классы доступны как в Cocoa, так и в Cocoa Touch, хотя есть также большое количество классов, уникальных для каждой платформы. Двухбуквенные префиксы, такие как NS и UI (для элементов пользовательского интерфейса на iOS), зарезервированы для использования Apple.
источник: Программирование с целью-C
(курсив)
классы какао начинаются с аббревиатуры "NS" (стоя либо NeXT-Sun creation of OpenStep, или для оригинальной фирменной термин в рамках OpenStep, NeXTSTEP): NSString, NSArray и др.
Foundation Kit, или просто Фонд, впервые появился в OpenStep. На Mac OS X он основан на основном фундаменте. Фонд универсальная объектно-ориентированная библиотека, предоставляющая строку и значение манипуляция, контейнеры и итерации, распределенные вычисления, запуск циклы и другие функции, которые непосредственно не привязаны к графическому пользовательский интерфейс. префикс "NS" используется для всех классов и констант в рамки, происходит от OPENSTEP наследие какао, которое было совместно разработанная далее и Солнце.
когда NeXT определяли API NextStep (в отличие от операционной системы NEXTSTEP), они использовали префикс NX, как в NXConstantString. Когда они писали спецификацию OpenStep с Sun (не путать с операционной системой OPENSTEP), они использовали префикс NS, как в NSObject.
Билл Бумгарнер aka @bbum, кто должен знать, размещенном на CocoaBuilder список рассылки в 2005 году:
Солнце вошло в картину немного после того, как префикс NS вступил в игру. Префикс NS появился в общедоступных API во время перехода от NeXTSTEP 3.0 к NeXTSTEP 4.0 (также известный как OpenStep). До 4.0, a несколько символов использовали префикс NX, но большинство классов, предоставляемых системные библиотеки вообще не имели префиксов -- List, коллекция Hashtable, Вид и др...
похоже, что все согласны с тем, что префикс NX (для NeXT) использовался до 1993/1994 годов, и документы Apple говорят:
официальный OPENSTEP API, опубликованный в сентябре 1994 года, был первым, кто разделил API между Foundation и Application Kit и первым использовал префикс "NS".
в принципе NS происходит от N extSTEP, оригинальная операционная система, которая стала Mac OS X, когда Apple приобрела Next.
Я хочу объяснить кое-что еще, и именно поэтому это необходимо.
В C++ есть пространства имен и почти все идет в std
вот почему у вас есть std::string.
пространства имен используются, так что это тяжелее для вас, чтобы сделать ошибку, и вы можете написать ваша собственная строка класса не конфликтует с системной.
Objective-C является надмножеством C, но он не включает пространства имен и по той же причине, прежде всего, системные классы предваряются NS или каким-то другим странным префиксом.
Это то же самое, как все классы DirectX с префиксом D3D и как все классы OpenGL с префиксом gl.
Это означает, что вы не должны использовать NS to name собственные классы и когда вы видите NS, CA в основной анимации или CG в Core Graphics вы понимаете, что это Вызов системного фреймворка.
Swift изменяет это соглашение, потому что Swift поддерживает пространство имен и сопоставляет его основные типы, такие как String, с эквивалентами NS.
NextStep. Это пережиток того, когда objective-c был создан рядом с напишите nextstep (позже os x) и все связанные с ним приложения и т. д. Они представляют элементы, которые не являются частью исходной основы C, например, в C нет элемента' string', поэтому в objective-c, это дополнительный элемент основы 'NSString'.
Comments