Sobes.tech
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.