İnkişaf etdirici komandasında yaddaş idarəetməsi üçün weak və ya unowned istifadə etmək hansı vəziyyətdə daha uyğundur?
sobes.tech Süni İntellekt
AI-dan cavab
iOS-da, ARC (Avtomatik Referans Sayımı) ilə yaddaş idarə etmək üçün, obyektlərin saxlanma döngüsünü qarşısını almaq üçün zəif (weak) və təhlükəsiz olmayan (unowned) istinadlar istifadə olunur.
-
weak istinad, müəyyən bir zamanda nil ola biləcək halda istifadə olunur, yəni, ona istinad edən obyekt silinə bilər. Zəif istinad, obyekt sərbəst buraxıldıqda avtomatik olaraq nil-ə təyin olunur. Bu, əlaqənin məcburi olmadığı və obyektin yoxa çıxması mümkün olduğu hallara uyğundur.
-
unowned istinad, həmişə mövcud olan obyektə işarə etməli və nil ola bilməz. Əgər obyekt sərbəst buraxılsa və unowned istinad qalarsa, bu, icra zamanı xəta ilə nəticələnər. Adətən, unowned, istinad edilən obyektin həyat dövrünün, istinad sahibi ilə müqayisədə daha uzun olacağı hallarda istifadə olunur.
Nümunə:
class Parent {
var child: Child?
}
class Child {
weak var parent: Parent? // weak, çünki parent daha əvvəl silinə bilər
}
// Yaxud
class Customer {
let card: CreditCard
init() {
card = CreditCard(customer: self)
}
}
class CreditCard {
unowned let customer: Customer // unowned, çünki kart, müştəri olmadan mövcud ola bilməz
init(customer: Customer) {
self.customer = customer
}
}
Xülasə:
- Referans nil ola biləcək və döngüləri qarşısını almaq istəyirsinizsə, weak istifadə edin.
- Referans hər zaman etibarlı olmalı və obyekt, referansdan daha uzun müddət mövcud olursa, unowned istifadə edin.