Відповіді:
Це з спадщини NeXTSTEP .
Оригінальний код фреймворків Cocoa надійшов від фондів бібліотек NeXTSTEP та AppKit (ці назви досі використовуються в рамках какао-какао Apple), і інженери NextStep вирішили встановити свої символи NS.
Оскільки Objective-C є розширенням C і, отже, не має просторів імен, як у C ++, символи повинні бути встановлені з унікальним префіксом, щоб вони не стикалися. Це особливо важливо для символів, визначених у рамках.
Якщо ви пишете заявку таким чином, що ваш код, ймовірно, коли-небудь використовуватиме ваші символи, вам не доведеться турбуватися про це. Але якщо ви пишете рамку або бібліотеку для використання іншими людьми, вам також слід приєднати свої символи до унікального префіксу. У CocoaDev є сторінка, на якій багато розробників у спільноті Cocoa перелічили свої "обрані" префікси. Також вам може бути корисна ця дискусія ТАК
N eXT S TEP або N eXTSTEP / S un, залежно від того, кого ви запитуєте.
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), що згодом стало какао.
Ці різні імена насправді досить заплутані (тим більше, що деякі з імен відрізняються лише тим, які символи мають верхній або нижній регістр ..), спробуйте це для пояснення:
Від документів розробника Apple:
Історична примітка: Якщо вам цікаво, чому так багато класів, з якими ви стикаєтеся, мають префікс NS, це через минулу історію Cocoa та Cocoa Touch. Какао почав своє життя, коли зібрані рамки використовувались для створення додатків для операційної системи NeXTStep. Коли Apple придбала NeXT ще в 1996 році, значна частина NeXTStep була включена в OS X, включаючи існуючі назви класів. Cocoa Touch був представлений як iOS-еквівалент какао; деякі класи доступні як в Cocoa, так і в Cocoa Touch, хоча є також велика кількість класів, унікальних для кожної платформи. Двобуквенні префікси, такі як NS та UI (для елементів інтерфейсу користувача на iOS), зарезервовані для використання Apple.
Джерело: Програмування з Objective-C
(наголос додано)
Класи какао починаються з абревіатури "NS" (стоїть або для створення NeXT-Sun OpenStep , або для початкового терміна власності для OpenStep рамки, NeXTSTEP ): NSString, NSArray тощо.
Фонд Kit , або, звичайно, просто Foundation , вперше з'явився в OpenStep . В Mac OS X він базується на Core Foundation. Фонд - це загальна об'єктно-орієнтована бібліотека, що забезпечує обробку рядків і значень, контейнери та ітерацію, розподілені обчислення, запуску циклів та інші функції, не пов'язані безпосередньо з графічним інтерфейсом користувача. Приставка «NS» , використовується для всіх класів і констант в рамках, виходить з OPENSTEP спадщини Какао, який був розроблений спільно NeXT і Sun .
Коли 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.
Білл Bumgarner aka @bbum, який повинен знати , розміщений у списку розсилки CocoaBuilder у 2005 році :
Sun вийшов на картинку трохи після того, як прийшов префікс NS. Префікс NS з'явився в публічних API під час переходу від NeXTSTEP 3.0 до NeXTSTEP 4.0 (також відомий як OpenStep). До 4.0, декілька символів використовували префікс NX, але більшість класів, наданих системними бібліотеками, взагалі не були префіксом - Список, Hashtable, View тощо ...
Схоже, всі згодні, що префікс NX (для NeXT) використовувався до 1993/1994 рр., А документи Apple кажуть :
Офіційний API OpenStep, опублікований у вересні 1994 р., Був першим, хто розділив API між Foundation і Application Kit і першим, хто застосував префікс "NS".