Sobes.tech
Junior — Middle

Дар кадом ҳолатҳо бояд калимаи `unowned`-ро дар Swift истифода баред?

sobes.tech AI

Ҷавоб аз AI

Калиди калиди unowned дар Swift барои эълон кардани истиноди заиф истифода мешавад, ки опционалӣ нест ва ҳисобкунаки истинодҳоро ба объект зиёд намекунад.

Ин дар ҳолатҳое истифода мешавад, ки байни объектҳо истиноди цикликӣ вуҷуд дорад, аммо кафолат дода мешавад, ки объекте, ки ба он ишора мекунад, дарозтар аз истиноди unowned хоҳад буд.

Масалан, дар муносибатҳои "волидон — фарзанд", ки фарзанд бо нигоҳ доштани истиноди unowned ба волидон барои пешгирӣ аз цикл:

class Parent {
    var child: Child?
}

class Child {
    unowned let parent: Parent
    init(parent: Parent) {
        self.parent = parent
    }
}

let dad = Parent()
let kid = Child(parent: dad)
dad.child = kid

Агар объекте, ки ба он ишора мекунад unowned, хориҷ карда шавад, кӯшиши дастрасӣ ба он истинод дар вақти иҷро хато меорад. Аз ин рӯ, unowned мувофиқ аст, вақте ки давомнокии ҳаёти объект кафолат дода шудааст, ки дарозтар аз истинод ба он хоҳад буд.