ARC tarafından sunulan özellikler için iki yeni bellek yönetimi özelliği vardır strong
ve weak
.
Bunun dışında copy
, tamamen farklı bir şey olduğu gibi, vs ve vs arasında herhangi bir fark var mı?strong
retain
weak
assign
Anladığım kadarıyla, buradaki tek fark , işaretçiye weak
atayacak nil
, ancak assign
olmayacak, bu da bırakıldıktan sonra işaretçiye bir mesaj gönderdiğimde programın çökeceği anlamına geliyor. Ama kullanırsam weak
, bu asla gerçekleşmeyecek, çünkü mesaj göndermek nil
hiçbir şey yapmaz.
Ben arasında herhangi farklar hakkında bilmiyorum strong
ve retain
.
Kullanmalıyım bir sebep var mı assign
ve retain
yeni projelerde veya kaldırılma tür?
weak
ve strong
) ve 4 değişken süresi kalifiye ( __strong
, __weak
, __unsafe_unretained
, __autoreleasing
). Aşağıdaki ARC Notlarına bakın.
assign
ARC ile derlerken kullanmanın bir hata olduğu bir sürümü vardı. Bu konuda silinmiş birçok cevap var. Görünüşe göre bu son sürümden önce değişti. unsafe_unretained
erken benimseyenlerin çoğunun tercih ettiği özelliktir. unsafe_unretained
Geçerli bir özellik olduğunu kanıtlamak için Apple'ın "Bazı Sınıflar İçin Güvenli Olmayan Referansları Kullan" alt başlığı altındaki "Verileri Kapsülleme" bölümündeki "Objective-C ile Programlama" konusuna bakın. Şunu söylüyor: "Bir mülk için, bu, güvensiz_güvenilmeyen özellik kullanmak anlamına gelir:"
strong
,weak
veunsafe_unretained
.