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



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

869   10  

10 ответов:

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

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

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

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

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

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

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

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

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

TheMerger OpenstepConfusion

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

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

источник: Программирование с целью-C

с Cocoa_ (API) Wikipedia:

(курсив)

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

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

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

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

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

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

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

в принципе NS происходит от N extSTEP, оригинальная операционная система, которая стала Mac OS X, когда Apple приобрела Next.

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

В C++ есть пространства имен и почти все идет в std

вот почему у вас есть std::string.

пространства имен используются, так что это тяжелее для вас, чтобы сделать ошибку, и вы можете написать ваша собственная строка класса не конфликтует с системной.

Objective-C является надмножеством C, но он не включает пространства имен и по той же причине, прежде всего, системные классы предваряются NS или каким-то другим странным префиксом.

Это то же самое, как все классы DirectX с префиксом D3D и как все классы OpenGL с префиксом gl.

Это означает, что вы не должны использовать NS to name собственные классы и когда вы видите NS, CA в основной анимации или CG в Core Graphics вы понимаете, что это Вызов системного фреймворка.

Swift изменяет это соглашение, потому что Swift поддерживает пространство имен и сопоставляет его основные типы, такие как String, с эквивалентами NS.

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

Comments

    Ничего не найдено.