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:
-
weakbu opsional havola bo'lib, u avtomatik ravishdanilga aylantiriladi, ob'ekt bo'shatilganda. Bu havola ob'ektning hayoti davomidanilbo'lishi mumkin bo'lgan hollarda ishlatiladi. -
unownedbu opsional bo'lmagan havola bo'lib, u har doim ob'ekt mavjud bo'lishini taxmin qiladi. Agar ob'ekt bo'shatilsa,unownedga 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.