Мо метавонед шарҳи намудҳои маълумоти, ки ба ишораҳои объектҳо дар хотира пешниҳод мекунанд, диҳед?
sobes.tech AI
Ҷавоб аз AI
Дар iOS, истинодҳо ба объектҳо дар хотира бо ёрии ишорагарон намоиш дода мешаванд, аммо бо хусусиятҳое, ки аз навъи додаҳо ва идоракунии хотира вобастаанд.
Намудҳои асосии истинодҳо:
-
Истиноди қавӣ (strong reference) — истиноди стандартӣ, ки объектро дар хотира нигоҳ медорад. То он даме, ки ҳадди ақал як истиноди қавӣ вуҷуд дорад, объект нест мешавад.
-
Истиноди заъиф (weak reference) — объектро дар хотира нигоҳ намедорад. Агар объект нест карда шавад, истиноди заъиф автоматӣ nil мешавад, ки аз ишораҳои «мурғаб» пешгирӣ мекунад.
-
Истиноди беҳуқуқ (unowned reference) — монанд ба заъиф, аммо тахмин мезанад, ки объект дар тамоми давраи зиндагии истинод вуҷуд дорад. Агар объект нест карда шавад, дастрасӣ ба истиноди беҳуқуқ ба катиҷ оварда мерасонад.
Масалан дар Swift:
class Person {
var name: String
init(name: String) { self.name = name }
}
var strongRef: Person? = Person(name: "Alice") // истиноди қавӣ
weak var weakRef = strongRef // истиноди заъиф
unowned var unownedRef = strongRef! // истиноди беҳуқуқ
strongRef = nil // объект нест мешавад, weakRef nil мешавад, unownedRef нодуруст мешавад
Ин гуна намудҳои истинодҳо кӯмак мекунанд, ки муҳлати зиндагии объектҳоро идора кунанд ва аз дарзмолҳои хотира ва циклҳои нигоҳдорӣ пешгирӣ кунанд.