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.