Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Segíthet -e a memória grafikon eszköz a megtartási ciklusok azonosításában az mvvmcross alkalmazásokban


Segíthet -e a memória grafikon eszköz a megtartási ciklusok azonosításában az mvvmcross alkalmazásokban


Igen, a memória grafikon eszköze az Xcode -ban segíthet azonosítani a megtartási ciklusokat az MVVMCross alkalmazásokban. Így működik, és hogyan lehet alkalmazni az mvvmcross -ra:

A ciklusok megtartása megértése

A megtartási ciklusok akkor fordulnak elő, amikor két vagy több objektum erősen hivatkozik egymásra, megakadályozva őket, hogy a memóriából kiépüljenek. Ez az iOS fejlesztésében gyakori kérdés, különösen akkor, ha olyan küldötteket vagy bezárásokat használ, amelyek erősen rögzítik a tárgyakat.

A memória grafikon eszköz használata

1. Az alkalmazás futtatásához és pillanatképek készítéséhez: A memória grafikon eszköz használatához futtassa az MVVMCross alkalmazást az Xcode -ban, és navigáljon a magáramlásán. Vegyünk memória pillanatképeket különböző pontokon, különösen miután a nézetektől vagy a nézet modellektől való navigáltak, amelyeket el kell rendezni.

2. Pillanatképek elemzése: A memória gráf hibakeresésben a bal oldali panel megjeleníti az összes memóriában lévő objektumot, a példányszámukkal együtt. Keressen olyan tárgyakat, amelyeket meg kellett volna rendezni, de még mindig jelen vannak. Az osztályok számának növekedése az idő múlásával jelezheti a megtartási ciklust.

3. A megtartási ciklusok azonosítása: Válasszon egy objektumot a bal oldali panelen az objektumgrafikon megtekintéséhez. A grafikon bemutatja azokat a hivatkozásokat, amelyek az objektumot a memóriában tartják. A vastag vonalak erős hivatkozásokat jelölnek, míg a világosszürke vonalak ismeretlen hivatkozásokat jelölnek (amelyek gyenge vagy erősek lehetnek). Ha olyan hurkot lát, ahol az objektumok erősen hivatkoznak egymásra, akkor ez valószínűleg megtartási ciklus.

4. A megtartási ciklusok rögzítése: Miután azonosította a megtartási ciklust, vizsgálja felül a kódját, hogy megtalálja, hol jönnek az erős hivatkozások. Ez gyakran magában foglalja a gyenge hivatkozásokra való erős hivatkozások megváltoztatását, különösen a küldöttekben vagy a bezárásokban.

Alkalmazás az mvvmcross -ra

Az MVVMCross alkalmazásokban a nézeti modellek szorosan kapcsolódnak a nézetek életciklusához. Ez néha a ciklusok megtartásához vezethet, ha nem megfelelően kezelik. Például, ha egy nézetmodell határozottan hivatkozik a nézetre, és a nézet erősen hivatkozik a nézetmodellre (talán egy kötésen keresztül), akkor megtartási ciklus fordulhat elő.

Annak elkerülése érdekében, hogy az MVVMCross -ban ezt elkerüljék, győződjön meg arról, hogy a nézetekről a modellek megtekintésére vonatkozó hivatkozások gyengék. Használjon életciklus -módszereket az MVVMCross által biztosított (mint például a „eltűnt”), hogy megtisztítsa az erős hivatkozásokat, amikor a nézeteket elutasítják. Ezenkívül használja a memória grafikon eszközt annak ellenőrzésére, hogy a nézetmodelleket helyesen rendezik -e, amikor a kapcsolódó nézeteket eltávolítják a navigációs veremből.

Példa a megtartási ciklusok azonosítására az MVVMCross -ban

Tegyük fel, hogy van egy „MyViewModel”, amely kötődik a „MyView” -hoz. Ha a `myview` erőteljesen hivatkozik a„ myviewmodel ”-re, és a„ myviewmodel ”szintén erős hivatkozást tartalmaz a„ myview ”-re (talán egy küldött vagy bezárás révén), akkor mindkét objektum a memóriában marad, még akkor is, ha a„ MyView ”-től való navigációból származik. A memória grafikon eszköz használatával azonosítaná ezt a ciklust, majd módosítaná a kódot, hogy szükség esetén gyenge referenciákat használjon.

Ezeknek a lépéseknek a követésével és a Memória Graph eszköz használatával hatékonyan azonosíthatja és megoldhatja a megőrzési ciklusokat az MVVMCross alkalmazásokban, biztosítva, hogy az alkalmazás memóriakészüléke hatékony és stabil maradjon.

Idézetek:
[1] https://doordash.engineering/2019/05/22/ios-memory-leaks-and--reain-cycle-detection-using-xcodes-memory-graph-debugger/
[2] https://careersatdoordash.com/blog/ios-memory-leaks-and--reain-cycle-detection-using-xcodes-memory-graph-debugger/
[3] https://www.tothenew.com/blog/memory-leak-with-memory-graph-debugger/
[4] https://paul-samuels.com/blog/2018/11/20/unit-testing-retain-cycles/
[5] https://www.mvvmcross.com/mvvmcross-5-rease/
[6] https://stackoverflow.com/questions/54040726/mvvmcross-droid-pears-to-he-e-e-e-wond-of-viewmodels-and-never-disposing-w-w-w-w
[7] https://www.donnywals.com/using-xcodes-memory-graph-find-memory-leaks/
[8] https://www.mvvmcross.com/mvvmcross-6.0.0-rease/
[9] https://stackoverflow.com/questions/41660486/knownow-where-retain-cycles-are-and-and-doving-them