Многие классы в Cocoa/Cocoa Touch имеют префикс NS. Что это значит?
Что означает префикс NS?
Ответ 1
Это из NeXTSTEP наследия.
Ответ 2
Оригинальный код для каркасов Cocoa был взят из библиотек NeXTSTEP Foundation и AppKit (эти имена до сих пор используются фреймворками Apple Cocoa), и инженеры NextStep предпочли префикс своих символов перед NS.
Поскольку Objective-C является расширением C и, следовательно, не имеет пространств имен, как в C++, символы должны иметь префикс с уникальным префиксом, чтобы они не сталкивались. Это особенно важно для символов, определенных в каркасе.
Если вы пишете приложение, так что ваш код, вероятно, когда-либо будет использовать ваши символы, вам не нужно беспокоиться об этом. Но если вы пишете фреймворк или библиотеку для использования другими людьми, вам также следует добавлять префиксы к вашим символам. У CocoaDev есть страница, где многие разработчики в сообществе Cocoa перечислили свои "выбранные" префиксы. Вы также можете найти эту полезную дискуссию полезной.
Ответ 3
N eXT S TEP или N eXTSTEP/ S не зависит от того, о ком вы спрашиваете.
В течение долгого времени у Sun были довольно большие инвестиции в OpenStep. До того, как Солнце вошло в изображение, большинство вещей в фундаменте, хотя тогда оно не было известно как основа, было префиксом NX, для N e X T, а иногда как раз перед тем, как Sun вошла в картину, все было переименовано в NS. S, скорее всего, не стоял за Солнцем, но после того, как Солнце вступило в общий консенсус, было заявлено, что Солнце соблюдает их участие.
У меня на самом деле была ссылка на это, но я не могу найти ее прямо сейчас. Я обновляю сообщение, если/когда я его снова найду.
Ответ 4
Это наследие NextStep (= NS). NeXT была компьютерной компанией, созданной Стивом Джобсом после его выхода из Apple в 1985 году, а NextStep - это операционная система (основанная на UNIX) вместе с языком Obj-C и временем выполнения. Вместе с ним библиотеки и инструменты NextStep позже был переименован в OpenStep (который также был названием API, разработанным NeXT вместе с Sun), который позже стал Cocoa.
Эти разные имена на самом деле довольно запутывают (особенно потому, что некоторые имена различаются только в том случае, когда символы имеют верхний или нижний регистр.), попробуйте это для объяснения:
Ответ 5
Из документов разработчика Apple:
Историческая заметка. Если вы задаетесь вопросом, почему у многих из классов, с которыми вы сталкиваетесь, есть префикс NS, из-за прошлой истории Cocoa и Cocoa Touch. Cocoa начал жизнь как собранные рамки, используемые для создания приложений для операционной системы NeXTStep. Когда Apple приобрела NeXT еще в 1996 году, большая часть NeXTStep была включена в OS X, включая существующие имена классов. Cocoa Touch был представлен как эквивалент iOS Cocoa; некоторые классы доступны как в Cocoa, так и в Cocoa Touch, хотя есть и большое количество классов, уникальных для каждой платформы. Двухбуквенные префиксы, такие как NS и UI (для элементов пользовательского интерфейса в iOS), зарезервированы для использования Apple.
Источник: Программирование с помощью Objective-C
Ответ 6
(выделено курсивом)
Cocoa классы начинаются с аббревиатуры "NS" (стоящий либо для Создание NeXT-Sun OpenStep или для первоначального фирменного термина для рамки OpenStep, NeXTSTEP): NSString, NSArray и т.д.
Foundation Kit, или, чаще всего, Foundation, впервые появился в OpenStep. В Mac OS X он основан на Core Foundation. Фонд - это универсальная объектно-ориентированная библиотека, предоставляющая строку и значение манипуляции, контейнеры и итерация, распределенные вычисления, запуск петли и другие функции, которые напрямую не привязаны к графическому пользовательский интерфейс. Префикс "NS" , используемый для всех классов и констант в структура, происходит от Cocoa наследия OPENSTEP, который был совместно разработанный NeXT и Sun.
Ответ 7
Когда NeXT определяли API NextStep (в отличие от операционной системы NEXTSTEP), они использовали префикс NX, как в NXConstantString. Когда они пишут спецификацию OpenStep с помощью Sun (не путать с операционной системой OPENSTEP), они использовали префикс NS, как в NSObject.
Ответ 8
Bill Bumgarner aka @bbum, который должен знать, опубликован в список рассылки CocoaBuilder в 2005:
Солнце вошло в изображение немного после того, как префикс NS вступил в игру. Префикс NS появился в публичных API-интерфейсах во время перехода от NeXTSTEP 3.0 к NeXTSTEP 4.0 (также известного как OpenStep). До 4,0 несколько символов использовали префикс NX, но большинство классов, предоставляемых системные библиотеки не были префиксом вообще - List, Hashtable, Просмотр и т.д.
Кажется, что все согласны с тем, что префикс NX (для NeXT) использовался до 1993/1994, а Apple docs говорит:
Официальный OpenStep API, опубликованный в сентябре 1994 года, был первым, кто разделил API между Foundation и Application Kit и первым использовал префикс NS.
Ответ 9
В основном NS поставляется из N ext S TEP, исходной операционной системы, которая стала Mac OS X, когда Apple приобрела Next.
Я хочу объяснить что-то еще, и именно поэтому именно это нужно.
В С++ существуют пространства имен и почти все идет в std
Вот почему у вас есть std::string.
Пространства имен используются, поэтому вам сложнее сделать ошибку, и вы можете написать свою собственную строку класса, не конфликтуя с системной.
Objective-C является надмножеством C, но он не включает пространства имен и по той же причине, прежде всего, системные классы имеют префикс NS или какой-либо другой странный префикс.
Это то же самое, что и все классы DirectX с префиксом D3D и как все классы OpenGL имеют префикс с gl.
Это означает, что вы не должны использовать NS, чтобы называть свои собственные классы, и когда вы видите NS, CA в Core Animation или CG в Core Graphics вы понимаете, что это вызов системы.
Swift меняет это соглашение, поскольку Swift поддерживает пространство имен и сопоставляет его основные типы, такие как String, с эквивалентами NS.
Ответ 10
NextStep. Это перерыв с того момента, когда objective-c был создан NeXT для напишите nextstep (позже os x) и все связанные приложения и т.д. Они представляют элементы, которые не являются частью первоначальной основы C, например, в C нет элемента 'string', поэтому в objective-c, это дополнительный элемент фундамента "NSString".
Ответ 11
Это из наследия NeXTSTEP