Saya berselancar melalui blog indah yang dikelola oleh Scott Stevenson, dan saya mencoba memahami konsep Objective-C yang mendasar dalam menugaskan delegasi properti 'assign' vs 'retain'. Catatan, keduanya sama di lingkungan pengumpulan sampah. Saya sebagian besar peduli dengan lingkungan berbasis non-GC (misalnya: iPhone).
Langsung dari blog Scott:
"Kata kunci yang ditetapkan akan menghasilkan setter yang memberikan nilai ke variabel instan secara langsung, daripada menyalin atau mempertahankannya. Ini terbaik untuk tipe primitif seperti NSInteger dan CGFloat, atau objek yang tidak Anda miliki secara langsung, seperti delegasi."
Apa artinya Anda tidak secara langsung memiliki objek delegasi? Saya biasanya mempertahankan delegasi saya, karena jika saya tidak ingin mereka pergi ke jurang, mempertahankan itu akan mengurusnya untuk saya. Saya biasanya abstrak UITableViewController jauh dari masing-masing dataSource dan mendelegasikan juga. Saya juga mempertahankan objek tertentu. Saya ingin memastikan itu tidak pernah hilang sehingga UITableView saya selalu memiliki delegasinya.
Dapatkah seseorang menjelaskan lebih lanjut di mana / mengapa saya salah, jadi saya bisa memahami paradigma umum ini dalam pemrograman Objective-C 2.0 menggunakan properti assign pada delegasi alih-alih mempertahankan?
Terima kasih!