Jawaban ini memiliki banyak kesalahan dan juga sudah usang. Silakan lihat pertanyaan / jawaban lain dan komentarnya.
Nonatomik
nonatomic
digunakan untuk tujuan multi-threading. Jika kita telah menetapkan atribut nonatomik pada saat deklarasi, maka utas lain yang menginginkan akses ke objek itu dapat mengaksesnya dan memberikan hasil sehubungan dengan multi-threading.
Menyalin
copy
diperlukan ketika objek bisa berubah. Gunakan ini jika Anda memerlukan nilai objek seperti saat ini, dan Anda tidak ingin nilai itu mencerminkan perubahan yang dibuat oleh pemilik objek lain. Anda harus melepaskan objek setelah selesai karena Anda menyimpan salinannya.
Menetapkan
Assign
agak berlawanan dengan copy
. Saat memanggil pengambil assign
properti, ia mengembalikan referensi ke data aktual. Biasanya Anda menggunakan atribut ini ketika Anda memiliki properti tipe primitif (float, int, BOOL ...)
Menahan
retain
diperlukan ketika atribut adalah penunjuk ke objek. Setter yang dihasilkan oleh @synthesize
akan mempertahankan (alias menambahkan jumlah retain ke) objek. Anda harus melepaskan objek setelah selesai. Dengan menggunakan retain itu akan meningkatkan jumlah retain dan menempati memori di pool autorelease.
Kuat
strong
adalah pengganti untuk atribut penahan, sebagai bagian dari Objective-C Automated Reference Counting (ARC). Dalam kode non-ARC itu hanya sinonim untuk mempertahankan.
Ini adalah situs web yang bagus untuk belajar tentang strong
dan weak
untuk iOS 5.
http://www.raywenderlich.com/5677/beginning-arc-in-ios-5-part-1
Lemah
weak
mirip dengan strong
kecuali bahwa itu tidak akan meningkatkan jumlah referensi dengan 1. Itu tidak menjadi pemilik objek itu tetapi hanya memegang referensi untuk itu. Jika jumlah referensi objek turun menjadi 0, meskipun Anda mungkin masih menunjuk ke sini, itu akan dialokasikan dari memori.
Tautan di atas berisi informasi Baik tentang Lemah dan Kuat.