Junior — Middle
Чаро дар коди бо истифода аз бастагиҳо тавсия дода мешавад, ки истиноди заиф ба худ (weak self) истифода шавад؟
sobes.tech AI
Ҷавоб аз AI
Истифодаи ишораи заиф (weak self) дар пӯшишҳо барои пешгирии даврҳои ишораҳои қавӣ (retain cycles) зарур аст, ки ба дарзмолшавии хотира оварда мерасонанд.
Вақте ки пӯшиш self-ро ҳамчун ишораи заиф мегирад ва self ин пӯшишро дар бар мегирад (масалан, дар хусусият), онҳо якдигарро нигоҳ медоранд ва ягон объект озод намешавад.
Маслиҳат барои истифодаи ишораи заиф:
someAsyncCall { [weak self] in
guard let self = self else { return }
self.doSomething()
}
Ин ҷо, self заиф мегирад, бинобар ин агар объект self пеш аз иҷрои пӯшиш нобуд шавад, он онро дар хотира нигоҳ намедорад, ки ин ба пешгирии дарзмолшавии хотира кӯмак мекунад.