Sobes.tech
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ə weakunowned 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:

  • weak opsional istinaddır və obyekti sərbəst buraxıldıqda avtomatik olaraq nil olur. Bu, obyektin həyat dövrü ərzində nil ola biləcək hallarda istifadə olunur.

  • unowned isə 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.