Jawaban:
Itu dari warisan NeXTSTEP .
Kode asli untuk kerangka kerja Kakao berasal dari librari NeXTSTEP Foundation dan AppKit (nama-nama itu masih digunakan oleh kerangka kerja Kakao Apple), dan para insinyur NextStep memilih untuk mengawali simbol mereka dengan NS.
Karena Objective-C adalah ekstensi dari C dan karenanya tidak memiliki ruang nama seperti di C ++, simbol harus diawali dengan awalan unik sehingga tidak bertabrakan. Ini sangat penting untuk simbol yang didefinisikan dalam suatu kerangka kerja.
Jika Anda menulis aplikasi, sehingga kode Anda hanya akan menggunakan simbol Anda, Anda tidak perlu khawatir tentang hal ini. Tetapi jika Anda menulis kerangka kerja atau pustaka untuk digunakan orang lain, Anda juga harus mengawali simbol Anda dengan awalan yang unik. CocoaDev memiliki halaman di mana banyak pengembang di komunitas Cocoa telah mendaftarkan awalan "terpilih" mereka. Anda juga dapat menemukan diskusi SO ini bermanfaat.
N EXT S TEP atau N eXTSTEP / S un tergantung pada siapa yang Anda tanyakan.
Sun memiliki investasi yang cukup besar di OpenStep untuk sementara waktu. Sebelum Sun memasuki gambar kebanyakan hal di yayasan, meskipun itu tidak dikenal sebagai yayasan saat itu, itu diawali NX , untuk N e X T, dan kadang-kadang sebelum Sun memasuki gambar semuanya berganti nama menjadi NS . The S kemungkinan besar tidak berdiri untuk Sun kemudian tapi setelah Sun melangkah konsensus umum adalah bahwa itu berdiri untuk Sun untuk menghormati keterlibatan mereka.
Saya sebenarnya punya referensi untuk ini tetapi saya tidak dapat menemukannya sekarang. Saya akan memperbarui posting jika / ketika saya menemukannya lagi.
Ini adalah warisan NextStep (= NS). NeXT adalah perusahaan komputer yang dibentuk Steve Jobs setelah ia keluar dari Apple pada tahun 1985, dan NextStep adalah sistem operasinya (berbasis UNIX) bersama dengan bahasa Obj-C dan runtime. Bersama-sama dengan perpustakaan dan alat-alatnya, NextStep kemudian berganti nama menjadi OpenStep (yang juga merupakan nama pada API yang dikembangkan NeXT bersama Sun), yang kemudian menjadi Cocoa.
Nama-nama yang berbeda ini sebenarnya cukup membingungkan (terutama karena beberapa nama hanya berbeda di mana karakter huruf besar atau kecil ..), coba ini untuk penjelasan:
Dari dokumen pengembang Apple:
Catatan Sejarah: Jika Anda bertanya-tanya mengapa begitu banyak kelas yang Anda temui memiliki awalan NS, itu karena sejarah masa lalu Cocoa and Cocoa Touch. Kakao mulai hidup sebagai kerangka kerja yang dikumpulkan yang digunakan untuk membangun aplikasi untuk sistem operasi NeXTStep. Ketika Apple membeli NeXT pada tahun 1996, banyak dari NeXTStep dimasukkan ke dalam OS X, termasuk nama kelas yang ada. Cocoa Touch diperkenalkan sebagai Kakao yang setara dengan iOS; beberapa kelas tersedia di Cocoa dan Cocoa Touch, meskipun ada juga sejumlah besar kelas yang unik untuk setiap platform. Awalan dua huruf seperti NS dan UI (untuk elemen Antarmuka Pengguna di iOS) dicadangkan untuk digunakan oleh Apple.
Sumber: Pemrograman dengan Objective-C
Dari Cocoa_ (API) Wikipedia :
(penekanan ditambahkan)
Kelas kakao dimulai dengan akronim "NS" (berdiri untuk penciptaan NeXT-Sun dari OpenStep , atau untuk istilah kepemilikan asli untuk kerangka OpenStep, NeXTSTEP ): NSString, NSArray, dll.
Foundation Kit , atau lebih umum hanya Foundation , pertama kali muncul di OpenStep . Pada Mac OS X, ini didasarkan pada Core Foundation. Foundation adalah perpustakaan berorientasi objek generik yang menyediakan string dan manipulasi nilai, wadah dan iterasi, komputasi terdistribusi, run loop, dan fungsi lainnya yang tidak secara langsung terkait dengan antarmuka pengguna grafis. The "NS" awalan , digunakan untuk semua kelas dan konstanta dalam rangka, berasal dari Kakao warisan OPENSTEP, yang dikembangkan bersama oleh NeXT dan Sun .
Ketika NeXT mendefinisikan NextStep API (sebagai lawan dari sistem operasi NEXTSTEP), mereka menggunakan awalan NX, seperti pada NXConstantString. Ketika mereka menulis spesifikasi OpenStep dengan Sun (jangan bingung dengan sistem operasi OPENSTEP) mereka menggunakan awalan NS, seperti pada NSObject.
Pada dasarnya NS berasal dari N ext S TEP, sistem operasi asli yang menjadi Mac OS X ketika Apple mengakuisisi Next.
Saya ingin menjelaskan sesuatu yang lain dan inilah mengapa dibutuhkan.
Di C ++ ada ruang nama dan hampir semuanya berjalan di std
Inilah sebabnya mengapa Anda memiliki std :: string.
Namespaces digunakan sehingga lebih sulit bagi Anda untuk membuat kesalahan dan Anda dapat menulis string kelas Anda sendiri tanpa bertentangan dengan sistem satu.
Objective-C adalah superset dari C, tetapi tidak termasuk ruang nama dan untuk alasan yang sama di atas semua kelas sistem diawali dengan NS atau awalan aneh lainnya.
Hal ini sama dengan bagaimana semua kelas DirectX diawali dengan D3D dan bagaimana semua kelas OpenGL diawali dengan gl .
Ini berarti bahwa Anda tidak boleh menggunakan NS untuk memberi nama kelas Anda sendiri dan ketika Anda melihat NS , CA di Core Animation atau CG di Core Graphics Anda mengerti bahwa ini adalah panggilan ke kerangka kerja sistem.
Swift mengubah konvensi ini, karena Swift mendukung namespacing dan memetakan tipe intinya seperti String ke NS.
Bill Bumgarner alias @bbum, yang seharusnya tahu , diposting di milis CocoaBuilder pada 2005 :
Sun memasuki gambar sedikit setelah awalan NS mulai berlaku. Awalan NS muncul di API publik selama perpindahan dari NeXTSTEP 3.0 ke NeXTSTEP 4.0 (juga dikenal sebagai OpenStep). Sebelum 4.0, beberapa simbol menggunakan awalan NX, tetapi sebagian besar kelas yang disediakan oleh perpustakaan sistem tidak diawali sama sekali - List, Hashtable, View, dll ...
Tampaknya semua orang setuju bahwa awalan NX (untuk NeXT) digunakan hingga 1993/1994, dan dokumen Apple mengatakan :
OpenStep API resmi, yang diterbitkan pada bulan September 1994, adalah yang pertama untuk membagi API antara Foundation dan Application Kit dan yang pertama menggunakan awalan "NS".