Apa yang dimaksud @private
dalam Objective-C?
ios
objective-c
cocoa
private
Jeff Wolski
sumber
sumber
Jawaban:
Ini adalah pengubah visibilitas — itu berarti bahwa variabel instance dideklarasikan sebagai
@private
hanya dapat diakses oleh instance dari kelas yang sama . Anggota pribadi tidak dapat diakses oleh subclass atau kelas lain.Sebagai contoh:
Juga, untuk memperjelas, metode selalu publik di Objective-C. Ada beberapa cara untuk menyembunyikan deklarasi metode, lihat pertanyaan ini untuk informasi lebih lanjut.
sumber
Seperti yang dikatakan htw, ini adalah pengubah visibilitas.
@private
berarti bahwa ivar (variabel instan) hanya dapat diakses langsung dari dalam instance dari kelas yang sama. Namun, itu mungkin tidak berarti banyak bagi Anda, jadi izinkan saya memberi Anda sebuah contoh. Kami akan menggunakaninit
metode kelas sebagai contoh, demi kesederhanaan. Saya akan berkomentar sebaris untuk menunjukkan item yang menarik.Jadi untuk menjawab pertanyaan Anda, @private melindungi gars dari akses oleh instance dari kelas lain. Perhatikan bahwa dua instance MyFirstClass dapat mengakses semua ivars masing-masing secara langsung; diasumsikan bahwa karena programmer memiliki kendali penuh atas kelas ini secara langsung, ia akan menggunakan kemampuan ini dengan bijak.
sumber
@private
dalam templat untuk suatu objek, itu tidak biasa lagi.@implementation
blok. Dan begitu Anda melakukannya, mereka secara pribadi aman tidak peduli pengubah visibilitas, karena mereka bahkan tidak terlihat oleh siapa pun di luar file itu.Penting untuk memahami apa artinya ketika seseorang mengatakan bahwa Anda tidak dapat mengakses
@private
variabel instan. Kisah sebenarnya adalah bahwa kompiler akan memberi Anda kesalahan jika Anda mencoba mengakses variabel-variabel ini dalam kode sumber Anda. Dalam versi GCC dan XCode sebelumnya, Anda hanya akan mendapatkan peringatan alih-alih kesalahan.Either way, pada saat run time, semua taruhan dibatalkan. Ini
@private
dan@protected
ivars dapat diakses oleh objek dari kelas apa pun. Pengubah visibilitas ini hanya menyulitkan untuk mengkompilasi kode sumber ke dalam kode mesin yang melanggar maksud pengubah visibilitas.Jangan mengandalkan pengubah visibilitas ivar untuk keamanan! Mereka tidak memberikan apa pun. Mereka hanya untuk penegakan waktu kompilasi dari keinginan kelas-pembangun.
sumber