Junior — Middle
Yaddaş idarəsində unowned yerinə weak istifadə etmək hansı hallarda üstünlük təşkil edir?
sobes.tech Süni İntellekt
AI-dan cavab
Swift-də weak və unowned güclü istinad döngələrini qarşısını almaq üçün istifadə olunur, lakin onlar müxtəlif vəziyyətlərdə tətbiq edilir:
-
weakopsional istinaddır və obyekti sərbəst buraxıldıqda avtomatik olaraqnilolur. Bu, obyektin həyat dövrü ərzindənilola biləcək hallarda istifadə olunur. -
unownedisə opsional olmayan istinaddır və ona istinad etdiyi obyektin hər zaman mövcud olacağına inanır. Əgər obyekt sərbəst buraxılsa,unowned-a giriş vaxtında səhv baş verəcək.
unowned istifadə etməyi üstün tutmaq üçün:
- İstinad həmişə mövcud obyektə işarə etməlidir (məsələn, uşaqdan daha uzun yaşayan valideyn obyekti).
- İstinad etdiyi obyektin həyat dövrünün, istinadın həyat dövründən daha qısa olmayacağına əminsiniz.
Nümunə:
class Customer {
let name: String
var card: CreditCard?
init(name: String) {
self.name = name
}
}
class CreditCard {
let number: UInt64
unowned let customer: Customer
init(number: UInt64, customer: Customer) {
self.number = number
self.customer = customer
}
}
let john = Customer(name: "John Appleseed")
john.card = CreditCard(number: 1234_5678_9012_3456, customer: john)
Burada, CreditCard Customer-a unowned istinad edir, çünki kart müştəri olmadan mövcud ola bilməz və müştəri kartdan daha uzun yaşayır.