Junior — Middle
შეგიძლიათ ახსნათ, რას ნიშნავს სუსტი მითითების გამოყენება self-ში დახურვებში?
sobes.tech AI
პასუხი AI-სგან
iOS (Swift)-ში დახურვებში (closures) self-ზე სუსტი მითითების (weak reference) გამოყენება ეხმარება შენარჩუნების ციკლების (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, რაც თავიდან აცილებს მეხსიერების გაჟონვას.