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 хориҷ карда шуд