Junior — Middle
Опишите најтежи проблем са грешком са којом сте се суочили и како сте га решили
sobes.tech АИ
Одговор од АИ
Jedan od složenih problema s kojima sam se suočio bio je curenje memorije zbog cikličnih referenci u Swift-u. U jednom projektu, aplikacija je neočekivano počela da usporava i da troši mnogo memorije.
Koristio sam alate Instruments iz Xcode-a sa profilerima Allocations i Leaks da precizno pratimo gde se dešava curenje. Ispostavilo se da na više mesta, zatvaranja (closures) hvataju self bez korišćenja slabih referenci ([weak self]), što je dovodilo do cikličnih referenci i nemogućnosti oslobađanja objekata.
Rešenje:
- Svuda gde su zatvaranja koristila
self, dodao sam[weak self]ili[unowned self]u zavisnosti od konteksta. - Pregledao sam životni ciklus objekata i uverio se da se pravilno oslobađaju.
- Nakon promena, ponovo sam testirao aplikaciju pomoću Instruments; nisu otkrivena curenja, a performanse su se vratile na normalu.