Apa perbedaan antara ini:
@property (nonatomic, weak) id <SubClassDelegate> delegate;
dan ini:
@property (nonatomic, assign) id <SubClassDelegate> delegate;
Saya ingin menggunakan properti untuk delegasi.
Jawaban:
Satu-satunya perbedaan antara weak
dan assign
adalah jika objek yang weak
ditunjuk oleh properti dibatalkan alokasinya, nilai weak
penunjuk akan disetel ke nil
, sehingga Anda tidak akan pernah mengambil risiko mengakses sampah. Jika Anda menggunakan assign
, itu tidak akan terjadi, jadi jika objek dialokasikan dari bawah Anda dan Anda mencoba mengaksesnya, Anda akan mengakses sampah.
Untuk objek Objective-C, jika Anda berada di lingkungan tempat Anda dapat menggunakannya weak
, Anda harus menggunakannya.
UITableView
memiliki assign
untuk delegasinya:@property (nonatomic, assign) id <UITableViewDelegate> delegate;