Sobes.tech
Junior — Middle

Opíšte najťažší problém s chybou, s ktorým ste sa museli vyrovnať, a ako ste ho vyriešili

sobes.tech AI

Odpoveď od AI

Jedným z náročných problémov, s ktorými som sa stretol, bolo únik pamäti spôsobený cyklickými odkazmi v Swift. V jednom projekte aplikácia náhle začala veľmi spomaľovať a spotrebovávať veľa pamäte.

Použil som nástroje Instruments od Xcode s profilmi Allocations a Leaks, aby som presne sledoval, kde k úniku dochádza. Ukázalo sa, že na viacerých miestach zachytávali uzávery self bez použitia slabých odkazov ([weak self]), čo viedlo k cyklickým odkazom a nemožnosti uvoľnenia objektov.

Riešenie:

  • Všade, kde uzávery používali self, som pridal [weak self] alebo [unowned self] podľa kontextu.
  • Prešiel som životný cyklus objektov a uistil sa, že sú správne uvoľnené.
  • Po zmenách som aplikáciu znova otestoval s Instruments; neboli zistené žiadne úniky a výkon sa vrátil do normálu.