Junior — Middle
Оё метавонед шарҳ диҳед, ки чӣ гуна озод кардани хотирае, ки объект дар дохили систем мегирад, рух медиҳад?
sobes.tech AI
Ҷавоб аз AI
В iOS, озодшаванието на паметта на обектите се извършва главно чрез механизма ARC (Автоматично преброяване на референциите).
Всеки обект в паметта има брояч на референциите: броя на активните препратки към него. Когато се създаде препратка към обект, броячът се увеличава; когато препратката бъде премахната, той намалява. Когато броячът достигне нула, обектът автоматично се освобождава от паметта.
Пример:
class Person {
var name: String
init(name: String) {
self.name = name
}
}
var person1: Person? = Person(name: "Alex") // брояч на референциите = 1
var person2 = person1 // брояч на референциите = 2
person1 = nil // брояч на референциите = 1
person2 = nil // брояч на референциите = 0, обектът се освобождава
Ако има циклични препратки (например, два обекта, които се препращат един към друг), ARC не може автоматично да освободи паметта. За решаване на този проблем се използват слаби (weak) или безвладетелски (unowned) препратки, които не увеличават брояча.