Dasturchilar jamoasida xotira boshqaruvi uchun weak yoki unowned ni qachon afzal ko'rish mumkin?
sobes.tech AI
AIdan javob
iOS-da, ARC (Avtomatik Referans Hisobi) yordamida xotirani boshqarish uchun, ob'ektlarni ushlab qolish sikllarini oldini olish uchun zaif (weak) va xavfsiz bo'lmagan (unowned) referenslar ishlatiladi.
-
weak referens, agar u bir nuqtada nil bo'lishi mumkin bo'lsa, ya'ni, unga murojaat qilayotgan ob'ekt o'chirilishi mumkin bo'lsa, ishlatiladi. Zaif referens ob'ekt bo'shatilganda avtomatik ravishda nilga o'rnatiladi. Bu, bog'lanish majburiy emas va ob'ekt yo'qolishi mumkin bo'lsa, mos keladi.
-
unowned referens, har doim mavjud bo'lgan ob'ektga murojaat qilishi va nil bo'lmasligi kerak bo'lsa, ishlatiladi. Agar ob'ekt bo'shatilsa va unowned referens qolsa, bu ish vaqtida xatolik keltirib chiqaradi. Odatda, unowned, ob'ektning hayot aylanishi, referens egasidan uzoqroq bo'lishi kafolatlangan hollarda qo'llaniladi.
Misol:
class Parent {
var child: Child?
}
class Child {
weak var parent: Parent? // weak, chunki parent avvalroq o'chirilishi mumkin
}
// Yoki
class Customer {
let card: CreditCard
init() {
card = CreditCard(customer: self)
}
}
class CreditCard {
unowned let customer: Customer // unowned, chunki karta, mijozsiz mavjud bo'lishi mumkin emas
init(customer: Customer) {
self.customer = customer
}
}
Xulosa:
- Referens nil bo'lishi mumkin va sikllarni oldini olish uchun weak ishlating.
- Referens har doim valid bo'lishi kerak va ob'ekt referensdan uzoqroq bo'lsa, unowned ishlating.