Многие классы в Cocoa / Cocoa Touch имеют префикс NS. Что это значит?
ios
objective-c
cocoa
cocoa-touch
Martin08
источник
источник
Оригинальный код для фреймворков Cocoa был взят из библиотек NeXTSTEP Foundation и AppKit (эти имена до сих пор используются фреймворками Apple Cocoa), и инженеры NextStep предпочли префикс своих символов перед NS.
Поскольку Objective-C является расширением C и, следовательно, не имеет пространств имен, как в C ++, символы должны иметь префикс с уникальным префиксом, чтобы они не сталкивались. Это особенно важно для символов, определенных в каркасе.
Если вы пишете приложение, так что ваш код, вероятно, когда-либо будет использовать ваши символы, вам не нужно беспокоиться об этом. Но если вы пишете фреймворк или библиотеку для использования другими людьми, вам также следует добавлять префиксы к своим символам. У CocoaDev есть страница, где многие разработчики в сообществе Cocoa перечислили свои «выбранные» префиксы. Вы также можете найти эту полезную дискуссию полезной.
источник
N Ext S ТЭП или N eXTSTEP / S ип в зависимости от того, кто вы спрашиваете.
Некоторое время Sun вкладывала в OpenStep довольно большие инвестиции. До того, как Sun вошла в картину, большинство вещей в фундаменте, хотя тогда он еще не назывался фундаментом, имели префикс NX для N e X T, а когда-то перед тем, как Sun вошел в картину, все было переименовано в NS . S , скорее всего , не стоять на солнце тогда , но после того, как ВС вышли в общем консенсусе в том , что он стоял на солнце , чтобы почтить их участие.
У меня действительно была ссылка для этого, но я не могу найти это прямо сейчас. Я обновлю пост, если / когда найду его снова.
источник
Это наследие NextStep (= NS). NeXT была компьютерной компанией, которую Стив Джобс создал после ухода из Apple в 1985 году, а NextStep - ее операционная система (на основе UNIX) вместе с языком Obj-C и средой исполнения. Вместе со своими библиотеками и инструментами NextStep был позже переименован в OpenStep (который также был названием API, который NeXT разрабатывал вместе с Sun), который в свою очередь позже стал Cocoa.
Эти разные имена на самом деле довольно запутанные (особенно потому, что некоторые имена отличаются только тем, какие символы в верхнем или нижнем регистре ...), попробуйте это для объяснения:
TheMerger OpenstepConfusion
источник
Из документации разработчика Apple:
Источник: Программирование с Objective-C
источник
Из Какао_ (API) Википедия :
(выделение добавлено)
источник
Когда NeXT определяли API NextStep (в отличие от операционной системы NEXTSTEP), они использовали префикс NX, как в NXConstantString. Когда они писали спецификацию OpenStep с Sun (не путать с операционной системой OPENSTEP), они использовали префикс NS, как в NSObject.
источник
В основном 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.
источник
Билл Бумгарнер aka @bbum, который должен знать , разместил в списке рассылки CocoaBuilder в 2005 году :
Кажется, что все согласны с тем, что префикс NX (для NeXT) использовался до 1993/1994 года, и документы Apple говорят :
источник