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 мувофиқ аст, вақте ки давомнокии ҳаёти объект кафолат дода шудааст, ки дарозтар аз истинод ба он хоҳад буд.