Junior — Middle
Мо метавонед шарҳ диҳед, ки истифодаи истиноди заиф ба self дар пӯшидаҳо чӣ маъно дорад?
sobes.tech AI
Ҷавоб аз AI
Ишқорлик (weak reference)ни iOS (Swift)даги ёпиқлар (closures)да selfга қўллаш, сақлаш циклларини (retain cycles) олдини олишга ёрдам беради, бу эса хотира оқибларига олиб келади. Бир ёпиқлик, selfни кучли ишора сифатида ёпса ва self бу ёпиқликни ўз ичига олса, улар ўзаро ўтказишади ва хотира эркин бўлмайди.
Масалан:
class MyClass {
var closure: (() -> Void)?
func setup() {
closure = { [weak self] in
guard let self = self else { return }
self.doSomething()
}
}
func doSomething() {
print("Action")
}
}
Бу ерда [weak self] деганда, ёпиқликда self заиф ишора бўлади, ва агар объект йўқ қилинса, ишора nil бўлади, бу хотира оқибларини олдини олади.