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

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

23.01.2009 17:22:44
9 ОТВЕТОВ
РЕШЕНИЕ

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

452
19.10.2013 06:11:14
... или, возможно, наследие NeXT / Sun (Sun была участником консорциума OpenStep)
Barry Wark 8.08.2012 15:33:29
Ну конечно; естественно. Все это прекрасно изложено в других ответах, поэтому я не стал копировать эту информацию в свою. Извините, если это кого-то обидит - я не против, если принятый ответ изменится на один из других (если это возможно - никогда не проверял).
Olaf Kock 8.08.2012 20:21:43
Я хотел бы видеть больше, но ссылку на NeXTSTEP
Bagrat Kirakosian 22.10.2015 21:16:00

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

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

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

779
6.03.2018 17:33:44

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

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

TheMerger OpenstepConfusion

53
20.06.2013 06:11:03
Я мог бы поклясться, что Apple уволила его по разным причинам.
Fund Monica's Lawsuit 12.07.2016 22:46:33

N Ext S ТЭП или N eXTSTEP / S ип в зависимости от того, кто вы спрашиваете.

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

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

150
8.01.2013 12:36:44
Я слышал ту же историю из очень надежного источника; Я уверен, что это самый точный ответ здесь.
Tyler 26.08.2011 15:18:40
Simon Woodside 5.09.2015 04:05:21
@SimonWoodside Ссылка мертва.
Dinsdale 11.03.2020 20:03:57
Справочный Интернет-архив: web.archive.org/web/20151008121657/http://www.cocoabuilder.com/…
Simon Woodside 21.03.2020 04:09:44

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

12
24.01.2009 02:32:46

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

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

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

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

23
16.07.2012 19:47:56
Википедия здесь не так. Foundation Kit впервые появился в Enterprise Objects Framework , которая предшествовала OpenStep. Между прочим, версия Foundation для NeXT предположительно основывалась на CoreFoundation-подобном C API, но до Mac OS X
user23743 3.05.2013 10:55:38
@ user23743, я не думаю, что ты прав. EOF предшествует операционной системе OPENSTEP, но не API-интерфейсу OpenStep. Документация EOF, на которую вы ссылались напрямую (ссылается на OpenStep) [ cilinder.be/docs/next/NeXTStep/3.3/nd/Foundation/… , и обе они были выпущены в 1994 году.
AriX 25.04.2014 21:43:46

Из документации разработчика Apple:

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

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

43
19.03.2013 04:53:08

Билл Бумгарнер 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».

6
23.05.2017 12:10:45

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

10
28.12.2019 07:33:42