Apa yang dimaksud dengan awalan NS?

Jawaban:

456

Itu dari warisan NeXTSTEP .

Olaf Kock
sumber
7
... atau mungkin warisan NeXT / Sun (Sun adalah peserta dalam konsorsium OpenStep)
Barry Wark
27
Ya tentu saja. Itu semua ditata dengan indah di jawaban lain, itu sebabnya saya tidak repot menyalin informasi itu ke saya. Maaf jika itu menyinggung seseorang - Saya tidak keberatan jika jawaban yang diterima berubah ke yang lain (jika mungkin - tidak pernah memeriksa itu).
Olaf Kock
2
Saya ingin melihat lebih banyak tetapi tautan ke NeXTSTEP
Bagrat Kirakosian
784

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.

Barry Wark
sumber
150

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.

David Holm
sumber
4
Saya pernah mendengar cerita yang sama dari sumber yang sangat andal; Saya cukup yakin ini adalah jawaban paling akurat di sini.
Tyler
2
Saya menemukan referensi: cocoabuilder.com/archive/cocoa/136618-what-does-ns-means.html
Simon Woodside
@SimonWoodside Link sudah mati.
Dinsdale
53

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:

TheMerger OpenstepConfusion

Gregor
sumber
4
Saya berani bersumpah Apple memecatnya karena berbagai alasan.
Dana Gugatan Monica
43

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

Jonathan Lin
sumber
23

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 .

dikunyah
sumber
Wikipedia salah di sini. Foundation Kit pertama kali muncul di Enterprise Objects Framework , yang ada sebelum OpenStep. Kebetulan, versi NeXT Foundation seharusnya didasarkan pada API C seperti CoreFoundation, tetapi itu tidak diekspos sebagai antarmuka publik hingga Mac OS X.
@ user23743, saya rasa Anda tidak benar. EOF mendahului sistem operasi OPENSTEP, tetapi bukan OpenStep API. Dokumentasi EOF yang Anda
tautkan
12

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.


sumber
10

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.

Daniel Georgiev
sumber
6

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".

Simon Woodside
sumber