Sobes.tech
Junior — Middle

Yopingiz, yopiqdagi self ga zaif havola ishlatish nima ekanligini tushuntirib bera olasizmi?

sobes.tech AI

AIdan javob

iOS (Swift) da closuresda self ga zaif referans (weak reference) ishlatish, ushlab qolish sikllarini (retain cycles) oldini olishga yordam beradi, bu esa xotira oqib ketishlariga olib keladi. Bir closure selfni kuchli referans sifatida ushlasa va self bu closureni o'z ichiga olsa, ular bir-birini ushlab turadi, va xotira bo'shatilmaydi.

Misol:

class MyClass {
    var closure: (() -> Void)?

    func setup() {
        closure = { [weak self] in
            guard let self = self else { return }
            self.doSomething()
        }
    }

    func doSomething() {
        print("Action")
    }
}

Bu yerda, [weak self] deganda, closure ichida self zaif referans bo'ladi, va agar ob'ekt yo'q qilinsa, referans nil bo'ladi, bu esa xotira oqib ketishini oldini oladi.