Ada dua atribut manajemen memori baru untuk properti yang diperkenalkan oleh ARC, strong
dan weak
.
Terlepas dari copy
, yang jelas merupakan sesuatu yang sama sekali berbeda, apakah ada perbedaan antara strong
vs retain
dan weak
vs assign
?
Dari pemahaman saya, satu-satunya perbedaan di sini adalah yang weak
akan menetapkan nil
ke pointer, sementara assign
tidak akan, yang berarti program akan macet ketika saya mengirim pesan ke pointer setelah dirilis. Tetapi jika saya menggunakan weak
, ini tidak akan pernah terjadi, karena mengirim pesan ke nil
tidak akan melakukan apa-apa.
Saya tidak tahu tentang perbedaan antara strong
dan retain
.
Apakah ada alasan mengapa saya harus menggunakan assign
dan retain
dalam proyek-proyek baru, atau jenis yang ditinggalkan?
weak
dan strong
) dan 4 kualifikasi seumur hidup variabel ( __strong
, __weak
, __unsafe_unretained
, __autoreleasing
). Lihat Catatan ARC di bawah ini.
assign
saat kompilasi dengan ARC adalah kesalahan. Ada banyak jawaban yang dihapus tentang ini. Sepertinya itu sudah berubah sebelum rilis final. unsafe_unretained
adalah atribut yang disukai banyak dari kita pengguna awal. Sebagai bukti, unsafe_unretained
ini adalah atribut yang terlihat di Apple "Programming With Objective-C" di bawah bagian "Encapsulating Data" di bawah subjudul "Gunakan Referensi Tidak Terjamin untuk Beberapa Kelas". Yang mengatakan: "Untuk properti, ini berarti menggunakan atribut unsafe_unretained:"
strong
,weak
danunsafe_unretained
.