Sobes.tech
Middle

Чӣ гуна ҳисобкунакҳо (retention counts) бо пайвандҳои қавӣ дар iOS кор мекунанд?

sobes.tech AI

Ҷавоб аз AI

Ҳангоми объектро муқаррар кардани тағйирёбанда бо истинод қавӣ, ҳисобкунаки истинодҳо ба объект 1-га зиёд мешавад. Вақте ки истиноди қавӣ ба сифр ё аз доираи амал хориҷ мешавад, ҳисобкунаки истинодҳо кам мешавад. Объект вақте ки ҳисобкунаки истинодҳо ба сифр мерасад ва дигар истинодҳои қавӣ вуҷуд надорад, ба хотира хориҷ карда мешавад.

Масалан:

class MyObject {
    deinit {
        // Вақте ки объект хориҷ карда мешавад, даъват мешавад
        print("MyObject хориҷ карда шуд.")
    }
}

var object1: MyObject? = MyObject() // object1 - истиноди қавӣ, ҳисобкунаки истинодҳо ба MyObject == 1
var object2 = object1 // object2 - истиноди қавӣ, ҳисобкунаки истинодҳо ба MyObject == 2

object1 = nil // Истиноди қавӣ object1 ба null тағйир дода шуд, ҳисобкунаки истинодҳо ба MyObject == 1
object2 = nil // Истиноди қавӣ object2 ба null тағйир дода шуд, ҳисобкунаки истинодҳо ба MyObject == 0
// MyObject хориҷ карда шуд