Sobes.tech
Junior — Middle

Xotira boshqaruvida unowned o'rniga weak ni qachon afzal ko'rish mumkin?

sobes.tech AI

AIdan javob

Swiftda weak va unowned kuchli havolalarni oldini olish uchun ishlatiladi, ammo ular turli vaziyatlarda qo'llaniladi:

  • weak bu opsional havola bo'lib, u avtomatik ravishda nil ga aylantiriladi, ob'ekt bo'shatilganda. Bu havola ob'ektning hayoti davomida nil bo'lishi mumkin bo'lgan hollarda ishlatiladi.

  • unowned bu opsional bo'lmagan havola bo'lib, u har doim ob'ekt mavjud bo'lishini taxmin qiladi. Agar ob'ekt bo'shatilsa, unowned ga kirish ish vaqtida xatolik keltirib chiqaradi.

unowned ni ishlatishni afzal ko'rish uchun:

  • Havola har doim mavjud ob'ektga ishora qilishi kerak (masalan, boladan uzoqroq yashovchi ota-ona ob'ekti).
  • Siz havolaga ishonch hosil qilasizki, ob'ektning hayot davomiyligi havoladan qisqa bo'lmaydi.

Misol:

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)

Bu yerda, CreditCard Customer ga unowned havolaga ega, chunki karta mijozsiz mavjud bo'lishi mumkin emas, va mijoz kartadan uzoqroq yashaydi.