Junior — Middle
Kirjeldage kõige keerulisemat probleemi vea tõttu, millega pidite tegelema, ja kuidas te selle lahendasite
sobes.tech AI
Vastus AI-lt
Üks keerulisemaidest probleemidest, millega ma kokku puutusin, oli mälu lekked tsükliliste viidete tõttu Swiftis. Ühes projektis hakkas rakendus ootamatult väga aeglaselt tööle ja tarbima palju mälu.
Kasutasin Xcode Instruments tööriistu koos profileritega Allocations ja Leaks, et täpselt jälgida, kus lekked toimuvad. Selgus, et mitmel pool haarasid sulgud self ilma nõrkade viideteta ([weak self]), mis põhjustas tsüklilisi viiteid ja objektide vabastamise võimatust.
Lahendus:
- Kõigis kohtades, kus sulgud kasutasid
self, lisasin[weak self]või[unowned self]vastavalt kontekstile. - Vaatasin üle objektide elutsükli ja veendusin, et need vabastatakse õigesti.
- Pärast muudatusi testisin rakendust uuesti Instrumentsiga; lekked ei olnud leitud ning jõudlus naasis normaalseks.
See kogemus õpetas mind hoolikalt jälgima viiteid sulgudes ning kasutama profiili tööriistu keerukate vigade leidmiseks.