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