Junior — Middle
Дар кадом ҳолатҳо тағйирёбанда ҳисоб карда мешавад, ки аҳамияти худро аз даст дода ва аз хотира хориҷ карда мешавад?
sobes.tech AI
Ҷавоб аз AI
Дар iOS, тағирёбанда ҳамчун кӯҳна ҳисобида мешавад ва метавонад аз хотира хориҷ карда шавад, вақте ки дигар ҳеҷ гуна истинодҳои қавӣ (strong references) ба он вуҷуд надорад. Ин ба туфайли идоракунии автоматии хотира тавассути ARC (Automatic Reference Counting) имконпазир аст.
Ҳолатҳои асосие, ки дар онҳо объект аз хотира хориҷ карда мешавад:
- Ҳамаи истинодҳои қавӣ ба объект тоза ё nil карда шудаанд.
- Объект дигар аз ҷониби ягон объекти дигар нигоҳ дошта намешавад.
Масалан, агар шумо тағирёбие дошта бошед, ки ба объект ишора мекунад ва ба nil ёфтед ё аз доираи амал хориҷ шуд, ҳисобкунаки истинод коҳиш меёбад. Вақте ки он ба сифр мерасад, объект озод карда мешавад.
class MyClass {}
var obj: MyClass? = MyClass() // ҳисобкунаки истинод = 1
obj = nil // ҳисобкунаки истинод = 0, объект хориҷ карда шуд
Бинобар ин, тағирёбанда кӯҳна мешавад, вақте ки дигар ҳеҷ гуна истинодҳои қавӣ ба объект вуҷуд надорад, ва хотираи объект озод карда мешавад.