Sobes.tech
Junior

Kas yra strong atminties modifikatoriai?

sobes.tech AI

Atsakymas iš AI

Swift'e strong modifikatorius nurodo, kad nuoroda į objektą padidina to objekto nuorodų skaitiklį vienu. Tai reiškia, kad objektas liks atmintyje tol, kol egzistuos bent viena stipri nuoroda į jį.

Pagal numatytuosius nustatymus jis naudojamas nuorodų tipams (klasėms). Priskyrus nil kintamajam su strong modifikatoriumi, sumažėja nuorodų skaitiklis. Kai skaitiklis pasiekia nulį, objektas išlaisvinamas iš atminties.

Pavyzdys:

class Person {
    var name: String
    init(name: String) {
        self.name = name
        print("\(name) inicijuojamas")
    }
    deinit {
        print("\(name) de-inicijuojamas")
    }
}

var reference1: Person?
var reference2: Person?

reference1 = Person(name: "Alice") // Alice nuorodų skaitiklis: 1
reference2 = reference1           // Alice nuorodų skaitiklis: 2

reference1 = nil                   // Alice nuorodų skaitiklis: 1
reference2 = nil                   // Alice nuorodų skaitiklis: 0, Alice išlaisvinama