Sobes.tech
Middle — Middle+

Оё метавон истинодҳои заифро ҳамчун ихтиёрӣ ҳисоб кард ё онҳо дигар рафтор мекунанд?

sobes.tech AI

Ҷавоб аз AI

Референси заиф дар Swift — ин аст, ки шумораи истинодҳоро ба объекте, ки ба он ишора мекунад, зиёд намекунад. Ҳамеша ҳамчун интихобшаванда эълон мешавад, зеро объекте, ки ба он ишора мекунад, метавонад аз ёддошт хориҷ карда шавад, ва дар ин ҳолат референси заиф автоматӣ nil мешавад.

Яъне, референси заиф ҳамчун интихобшаванда рафтор мекунад: метавонад арзиш ё nil дошта бошад. Ин барои пешгирӣ аз дастрасӣ ба объекте, ки аллакай озод карда шудааст, муҳим аст.

Масалан:

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

var person: Person? = Person(name: "Alex")
weak var weakPerson: Person? = person

print(weakPerson?.name) // Optional("Alex")
person = nil
print(weakPerson?.name) // nil, зеро объект хориҷ карда шуд

Бинобар ин, референси заиф ҳамеша интихобшаванда аст ва автоматӣ nil мешавад вақте ки объект хориҷ карда мешавад.