it-swarm.com.ru

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

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

549
Martin08

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

427
Olaf Kock

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

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

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

767
Barry Wark

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

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

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

147
David Holm

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

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

TheMerger OpenstepConfusion

52
Gregor

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

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

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

41
Jonathan Lin

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

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

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

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

22
chown

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

11
user23743

В основном NS происходит из N ext S TEP, оригинальной операционной системы, которая стала Mac OS X, когда Apple приобрел Далее.

Я хочу объяснить что-то еще, и именно поэтому это необходимо.

В 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
Daniel Georgiev

Билл Бумгарнер он же @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
Simon Woodside

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

1
Prithvi Venu

Следующий шаг. Это пережиток того времени, когда NeXT создавал target-c для написания NeXTSTEP (позже os x) и всех связанных приложений и т.д. Они представляют элементы, которые не являются частью исходной основы C, например, нет строки элемент в C, поэтому в target-c это дополнительный базовый элемент 'NSString'.

1
Ramprasath Selvam