Saya baru mengenal pemrograman berorientasi objek, dan satu konsep yang telah lama saya pahami adalah kekekalan. Saya pikir bola lampu padam tadi malam tapi saya ingin memverifikasi:
Ketika saya menemukan pernyataan bahwa objek tidak dapat diubah tidak dapat diubah, saya bingung karena saya dapat, misalnya, melakukan hal berikut:
NSString *myName = @"Bob";
myName = @"Mike";
Di sana, saya baru saja mengubah myName, dari tipe NSString yang tidak dapat diubah. Masalah saya adalah bahwa kata, "objek" dapat merujuk ke objek fisik dalam memori, atau abstraksi, "myName." Definisi sebelumnya berlaku untuk konsep kekekalan.
Sedangkan untuk variabel, definisi imutabilitas yang lebih jelas (bagi saya) adalah bahwa nilai objek yang tidak dapat diubah hanya dapat diubah dengan juga mengubah lokasinya dalam memori, yaitu referensi (juga dikenal sebagai penunjuknya).
Apakah ini benar, atau apakah saya masih tersesat di hutan?
NSString
, itu " penunjuk ke danNSString
", yang tidak dapat diubah. Aku tahu apa-apa tentang C objektif, tapi aku menebak dalam contoh Anda yang@"Mike"
menciptakan contoh baru dariNSString
dan menugaskan ke pointer ,myName
. Jadi Anda belum mengubah objek yangmyName
menunjuk, hanya apa yang menunjuk.