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

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

вопрос задан 23.01.2009
Martin08
9161 репутация

10 ответов


  • 747 рейтинг

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

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

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

    ответ дан Barry Wark, с репутацией 99877, 23.01.2009
  • 403 рейтинг

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

    ответ дан Olaf Kock, с репутацией 36441, 23.01.2009
  • 145 рейтинг

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

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

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

    ответ дан David Holm, с репутацией 11670, 23.01.2009
  • 51 рейтинг

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

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

    TheMerger OpenstepConfusion

    ответ дан Gregor, с репутацией 856, 23.01.2009
  • 39 рейтинг

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

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

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

    ответ дан Jonathan Lin, с репутацией 10440, 19.03.2013
  • 21 рейтинг

    Из Cocoa_ (API) Википедия :

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

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

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

    ответ дан chown, с репутацией 40482, 27.10.2011
  • 10 рейтинг

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

    ответ дан David Holm, с репутацией 11670, 24.01.2009
  • 6 рейтинг

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

    ответ дан Daniel Georgiev, с репутацией 788, 8.01.2017
  • 6 рейтинг

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

    ответ дан Simon Woodside, с репутацией 5346, 5.09.2015
  • 1 рейтинг

    NextStep. Это пережиток того времени, когда NeXT создавал target-c для написать nextstep (позже os x) и все связанные приложения и т. д. Oни представляют элементы, которые не являются частью исходной основы C, например, в C нет элемента 'string', поэтому в target-c это дополнительный фундаментальный элемент 'NSString'.

    ответ дан Ramprasath Selvam, с репутацией 296, 21.06.2017