Junior — Middle
Qaysi hollarda o'zgaruvchi o'z ahamiyatini yo'qotgan deb hisoblanadi va xotiradan o'chiriladi?
sobes.tech AI
AIdan javob
iOS'da, o'zgaruvchi unga kuchli havolalar (strong references) bo'lmaganda, ya'ni unga hech qanday kuchli havola qolmaganda, eskirgan deb hisoblanadi va xotiradan o'chiriladi. Bu ARC (Automatic Reference Counting) orqali avtomatik xotira boshqaruvi tufayli amalga oshiriladi.
Obyekt xotiradan o'chiriladigan asosiy holatlar:
- Ob'ektga bo'lgan barcha kuchli havolalar o'chirilgan yoki nil ga o'rnatilgan.
- Ob'ekt boshqa hech qanday ob'ekt tomonidan ushlab turilmaydi.
Masalan, agar sizda ob'ektga havola qiladigan o'zgaruvchi bo'lsa va unga nil tayinlasangiz yoki u doirasidan chiqsa, havola hisoblagichi kamayadi. Hisoblagich nolga yetganda, ob'ekt bo'shatiladi.
class MyClass {}
var obj: MyClass? = MyClass() // havola hisoblagichi = 1
obj = nil // havola hisoblagichi = 0, ob'ekt o'chirildi
Shunday qilib, o'zgaruvchi, unga kuchli havolalar qolmay, va ob'ektning xotirasi bo'shatilganda, eskirgan deb hisoblanadi.