Sobes.tech
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, რაც თავიდან აცილებს მეხსიერების გაჟონვას.