Sobes.tech
Junior — Middle

Írja le a legnehezebb problémát egy hibával kapcsolatban, amivel szembesült, és hogyan oldotta meg

sobes.tech MI

Válasz az MI-től

Az egyik összetett probléma, amivel szembesültem, a Swiftben lévő ciklikus hivatkozások miatt kialakuló memória szivárgás volt. Egy projektben az alkalmazás váratlanul nagyon lelassult és sok memóriát fogyasztott.

Az Xcode Instruments eszközeit használtam az Allocations és Leaks profilerrel, hogy pontosan nyomon követhessem, hol történik a szivárgás. Kiderült, hogy több helyen a zárójelek (closures) self-t fogtak meg anélkül, hogy gyenge hivatkozásokat ([weak self]) használtak volna, ami ciklikus hivatkozásokhoz és az objektumok felszabadításának lehetetlenségéhez vezetett.

Megoldás:

  • Mindenhol, ahol a zárójelek self-t használtak, [weak self] vagy [unowned self]-t adtam hozzá, a kontextustól függően.
  • Áttekintettem az objektumok életciklusát, és biztosítottam, hogy helyesen legyenek felszabadítva.
  • A változtatások után újra teszteltem az alkalmazást az Instruments segítségével; nem találtam szivárgást, és a teljesítmény visszatért a normál értékhez.

Ez a tapasztalat megtanított arra, hogy figyeljek a hivatkozások elfogására a zárójelekben, és profilozó eszközöket használjak összetett hibák keresésére.