Что означает префикс NS? - PullRequest
       84

Что означает префикс NS?

548 голосов
/ 23 января 2009

Многие классы в Cocoa / Cocoa Touch имеют префикс NS. Что это значит?

Ответы [ 11 ]

767 голосов
/ 23 января 2009

Первоначальный код для каркасов Какао был взят из NeXTSTEP библиотек Foundation и AppKit (эти имена до сих пор используются в каркасах Apple Cocoa), и инженеры NextStep решили использовать префикс своих символов с NS. *

Поскольку Objective-C является расширением C и, следовательно, не имеет пространств имен, как в C ++, символы должны иметь префикс с уникальным префиксом, чтобы они не сталкивались. Это особенно важно для символов, определенных в каркасе.

Если вы пишете приложение, так что ваш код, скорее всего, когда-либо будет использовать ваши символы, вам не нужно об этом беспокоиться. Но если вы пишете фреймворк или библиотеку для использования другими людьми, вам также следует добавлять префиксы к вашим символам. У CocoaDev есть страница , на которой многие разработчики в сообществе Cocoa перечислили свои «выбранные» префиксы. Вы также можете найти это обсуждение SO полезным.

426 голосов
/ 23 января 2009

Это из NeXTSTEP наследия.

147 голосов
/ 23 января 2009

N eXT S TEP или N eXTSTEP / S в зависимости от того, кого вы спрашиваете.

Некоторое время Sun вкладывала в OpenStep довольно большие инвестиции. До того, как Солнце вошло в картину, большинство вещей в фундаменте, хотя тогда он еще не назывался фундаментом, имели префикс NX , для N e X T, а когда-то незадолго до того, как Сун вошел в картину, все было переименовано в NS . S , скорее всего, тогда не означало Солнца, но после того, как Солнце вошло в общее мнение о том, что Солнце заслужило их участие.

У меня действительно была ссылка на это, но я не могу найти ее прямо сейчас. Я обновлю сообщение, если / когда найду его снова.

52 голосов
/ 23 января 2009

Это наследие NextStep (= NS). NeXT была компьютерной компанией, которую Стив Джобс создал после ухода из Apple в 1985 году, а NextStep - ее операционная система (на основе UNIX) вместе с языком Obj-C и средой исполнения. Вместе со своими библиотеками и инструментами NextStep был позже переименован в OpenStep (который также назывался в API, который NeXT разрабатывал вместе с Sun), который, в свою очередь, позже стал Какао.

Эти разные имена на самом деле довольно запутанные (особенно потому, что некоторые имена отличаются только тем, какие символы в верхнем или нижнем регистре ...), попробуйте это для объяснения:

TheMerger OpenstepConfusion

41 голосов
/ 19 марта 2013

От разработчиков Apple:

Историческая справка. Если вам интересно, почему так много классов, с которыми вы сталкиваетесь, имеют префикс NS, это связано с прошлой историей Cocoa и Cocoa Touch. Какао начал свою жизнь как собранные платформы, используемые для создания приложений для операционной системы NeXTStep. Когда Apple приобрела NeXT в 1996 году, большая часть NeXTStep была включена в OS X, включая имена существующих классов. Cocoa Touch был представлен как iOS-эквивалент Какао; некоторые классы доступны как в Cocoa, так и в Cocoa Touch, хотя существует также большое количество классов, уникальных для каждой платформы. Двухбуквенные префиксы, такие как NS и UI (для элементов пользовательского интерфейса на iOS), зарезервированы для использования Apple.

Источник: Программирование с Objective-C

22 голосов
/ 27 октября 2011

Из Какао_ (API) Википедия :

(выделение добавлено)

Классы какао начинаются с аббревиатуры "NS" (обозначая либо NeXT-Sun создание OpenStep , или для оригинального проприетарного термина для инфраструктуры OpenStep NeXTSTEP ): NSString, NSArray и т. д.

Foundation Kit , или более просто Foundation , впервые появился в OpenStep . В Mac OS X он основан на Core Foundation. Фонд является универсальная объектно-ориентированная библиотека, предоставляющая строку и значение манипуляции, контейнеры и итерации, распределенные вычисления, запуск циклы и другие функции, которые не связаны напрямую с графическим пользовательский интерфейс. Префикс "NS" , используемый для всех классов и констант в рамки, взятые из наследия Какао OPENSTEP, которое было совместно разработано NeXT и Солнце .

11 голосов
/ 24 января 2009

Когда NeXT определяли API NextStep (в отличие от операционной системы NEXTSTEP), они использовали префикс NX, как в NXConstantString. Когда они писали спецификацию OpenStep с Sun (не путать с операционной системой OPENSTEP), они использовали префикс NS, как в NSObject.

6 голосов
/ 08 января 2017

В основном 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.

6 голосов
/ 05 сентября 2015

Билл Бумгарнер aka @bbum, который должен знать , опубликовано в списке рассылки CocoaBuilder в 2005 :

Sun вошел в картину немного позже, когда в игру вступил префикс NS. Префикс NS появился в открытых API при переходе с NeXTSTEP 3.0 на NeXTSTEP 4.0 (также известный как OpenStep). До 4.0, Горстка символов использует префикс NX, но большинство классов предоставляется системные библиотеки не имеют префикса вообще - List, Hashtable, Посмотреть и т.д ...

Кажется, все согласны с тем, что префикс NX (для NeXT) использовался до 1993/1994 года, а в документах Apple написано :

Официальный API-интерфейс OpenStep, опубликованный в сентябре 1994 года, первым разделил API-интерфейс между Foundation и Application Kit и первым использовал префикс «NS».

1 голос
/ 09 июня 2019

Это из наследия NeXTSTEP

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