Sobes.tech
Junior — Middle

Чӣ гуна истифодаи истинодҳои қавӣ дар забони барномасозӣ дар дарозмуддати мавҷудияти объект дар хотира таъсир мерасонад?

sobes.tech AI

Ҷавоб аз AI

Дар iOS (ва Swift/Objective-C) мустаҳкам (strong) истинодҳо оддӣ истинодҳо ба объектҳо мебошанд, ки ҳисобгари истинодҳоро ба объект меафзояд. То вақте ки ҳадди ақал як мустаҳкам истинод ба объект вуҷуд дорад, он аз ёддошт хориҷ намешавад.

Ин маъно дорад, ки объект дар ёддошт идома мекунад, то вақте ки истинодҳои мустаҳкам ба он вуҷуд доранд. Вақте ки ҳамаи истинодҳои мустаҳкам хориҷ ё nil мешаванд, объект автоматӣ озод карда мешавад (ARC — ҳисобкунии автоматии истинодҳо).

Масалан:

class Person {
    var name: String
    init(name: String) { self.name = name }
}

var person1: Person? = Person(name: "Alex") // истиноди мустаҳкам
var person2 = person1 // меафзояд ҳисобгари истинодҳо

person1 = nil // объект ҳоло ҳам вуҷуд дорад, чунки person2 ба он ишора мекунад
person2 = nil // ҳоло объект озод карда мешавад

Тавре ки мебинем, истинодҳои мустаҳкам мустақиман ба вақти зиндагии объект дар ёддошт таъсир мерасонанд — то вақте ки ҳадди ақал як вуҷуд дорад, объект зинда аст.