Sobes.tech
Middle

Как работят броячите (retention counts) със силни връзки в iOS?

sobes.tech AI

Отговор от AI

Когато присвоите обект на променлива със силна препратка, броячът на препратките към обекта се увеличава с 1. Когато силната препратка стане нула или излезе извън обхвата, броячът на препратките намалява с 1. Обектът се освобождава, когато броячът на препратките достигне нула и няма повече силни препратки към него.

Пример:

class MyObject {
    deinit {
        // Извиква се при освобождаване на обекта
        print("MyObject е освободен.")
    }
}

var object1: MyObject? = MyObject() // object1 - силна препратка, броячът на препратките към MyObject == 1
var object2 = object1 // object2 - силна препратка, броячът на препратките към MyObject == 2

object1 = nil // Силната препратка object1 е нулева, броячът на препратките към MyObject == 1
object2 = nil // Силната препратка object2 е нулева, броячът на препратките към MyObject == 0
// MyObject се освобождава