Objective C, seperti C, tidak memiliki ruang nama. Ini berarti bahwa jika seseorang telah mendefinisikan suatu fungsi foo
atau kelas Bar
, itu harus unik secara global dan Anda tidak dapat mendefinisikannya. Ini dapat menyebabkan banyak sakit kepala ketika Anda memiliki kode Anda dan kemudian menambahkan perpustakaan lain dan tiba-tiba hal-hal rusak di tempat-tempat aneh.
Ada adalah pedoman yang disajikan oleh Apple untuk ini di Pemrograman dengan Objective C: Konvensi bagian dari pengembang perpustakaan iOS:
Beberapa Nama Harus Unik di Seluruh Aplikasi Anda
Setiap kali Anda membuat tipe, simbol, atau pengidentifikasi baru, Anda harus terlebih dahulu mempertimbangkan ruang lingkup di mana nama harus unik. Terkadang ruang lingkup ini mungkin seluruh aplikasi, termasuk kerangka kerja yang terkait; terkadang cakupan dibatasi hanya untuk kelas yang menyertakan atau bahkan hanya satu blok kode.
Nama Kelas Harus Unik di Seluruh Aplikasi
Kelas Objective-C harus dinamai secara unik tidak hanya dalam kode yang Anda tulis dalam suatu proyek, tetapi juga di seluruh kerangka kerja atau bundel yang mungkin Anda sertakan. Sebagai contoh, Anda harus menghindari menggunakan nama kelas umum seperti ViewController atau TextParser karena mungkin kerangka kerja yang Anda sertakan dalam aplikasi Anda mungkin gagal mengikuti konvensi dan membuat kelas dengan nama yang sama.
Agar nama kelas tetap unik, konvensi ini menggunakan awalan di semua kelas. Anda akan memperhatikan bahwa nama kelas Cocoa dan Cocoa Touch biasanya dimulai dengan NS atau UI. Awalan dua huruf seperti ini disediakan oleh Apple untuk digunakan dalam kelas kerangka kerja. Saat Anda mempelajari lebih lanjut tentang Cocoa dan Cocoa Touch, Anda akan menemukan berbagai awalan lain yang terkait dengan kerangka kerja tertentu:
...
Kelas Anda sendiri harus menggunakan tiga awalan huruf. Ini mungkin terkait dengan kombinasi nama perusahaan Anda dan nama aplikasi Anda, atau bahkan komponen tertentu dalam aplikasi Anda. Sebagai contoh, jika perusahaan Anda disebut Whispering Oak, dan Anda mengembangkan game yang disebut Zebra Surprise, Anda dapat memilih WZS atau WOZ sebagai awalan kelas Anda.
Jadi, mereka perpustakaan yang Anda sebutkan jenis melanggar konvensi ini, tetapi mendapatkan inti dari masalah kurangnya namespace dalam Objective C.
Bacaan Lebih Lanjut
Namespacing oleh NSHipster
Apa cara terbaik untuk menyelesaikan tabrakan namespace Objective-C?
Bagaimana cara menggunakan ruang nama dalam kode objektif-iOS iOS?
;-)