Kyllä, Xcode -muistityökalu voi auttaa tunnistamaan syklit MVVMCross -sovelluksissa. Näin se toimii ja miten sitä voidaan soveltaa MVVMCrossiin:
Ymmärtäminen säilyttää syklit
Syklien säilyttäminen tapahtuu, kun kahdella tai useammalla objektilla on vahvat viittaukset toisiinsa, estäen niitä jakamasta muistista. Tämä on yleinen kysymys iOS -kehityksessä, varsinkin kun käytetään edustajia tai sulkemisia, jotka kuvaavat esineitä voimakkaasti.
Memory Graph -työkalun avulla
1. Sovelluksen suorittaminen ja tilannekuvien ottaminen: Voit käyttää muistikaaviotyökalua suorita MVVMCross -sovelluksesi Xcode -sovelluksessa ja selata sen ydinvirtauksia. Ota muistin tilannekuvia eri kohdissa, etenkin kun siirretään näkymät tai näkymämalleista, joita tulisi käsitellä.
2. SNAPPOTS -analysointi: Muistikaavion virheenkorjauksessa vasen paneeli näyttää kaikki tällä hetkellä muistissa olevat objektit ja niiden esiintymän määrät. Etsi esineitä, jotka olisi pitänyt käsitellä, mutta ne ovat edelleen läsnä. Luokan esiintymien määrän lisääntyminen ajan myötä voi viitata säilytysjakson.
3. Syklien säilyttäminen: Valitse objekti vasemmasta paneelista, jotta voit tarkastella sen objektikoulaa. Kaavio näyttää viitteet, jotka pitävät objektin muistissa. Lihavoidut viivat osoittavat vahvoja viitteitä, kun taas vaaleanharmaat viivat osoittavat tuntemattomia viitteitä (jotka voivat olla heikkoja tai vahvoja). Jos näet silmukan, jossa objektit viittaavat toisiinsa voimakkaasti, se on todennäköisesti säilytysjakso.
4. Kiinnityssyklien korjaaminen: Kun olet tunnistanut säilyttämisen syklin, tarkista koodisi löytääksesi missä vahvat viitteet luodaan. Usein tähän sisältyy vahvojen viittausten muuttaminen heikkoihin viitteisiin, etenkin edustajiin tai sulkemiseen.
MVVMCROSS
MVVMCross -sovelluksissa näkymämallit on tiukasti kytketty näkymien elinkaareen. Tämä voi joskus johtaa syklien säilyttämiseen, jos sitä ei hallita kunnolla. Esimerkiksi, jos näkymämallilla on vahva viittaus näkymään ja näkymässä on myös vahva viittaus näkymämalliin (ehkä sitomisen kautta), säilyttämisjakso voi tapahtua.
Varmista, että tämän välttäminen MVVMCrossissa voidaan välttää, että näkymät näkymiin on heikko. Käytä MVVMCrossin (kuten "kadonneita") tarjoamia elinkaarimenetelmiä puhdistaaksesi vahvat viitteet, kun näkymät hylätään. Lisäksi tarkista muistikaaviotyökalu, että näkymämalleja jaetaan oikein, kun niiden siihen liittyvät näkymät poistetaan navigointipinoista.
Esimerkki MVVMCrossin syklien tunnistamisesta
Oletetaan, että sinulla on `myViewModel`, joka on sidottu` myview`. Jos `MyView` pitää vahvan viittauksen` MyViewModel` -tapahtumaan ja `MyViewModel` pitää myös vahvan viittauksen` myview` (ehkä edustajan tai sulkemisen kautta), näet molemmat objektit, jotka ovat pysyviä muistissa, vaikka navigointia "MyView": stä. Memory Graph -työkalun avulla tunnistat tämän syklin ja muokata sitten koodiasi käyttämään heikkoja viitteitä tarvittaessa.
Seuraamalla näitä vaiheita ja käyttämällä muistikaaviotyökalua tunnistamaan ja ratkaisemaan tehokkaasti säilyttää syklit MVVMCross -sovelluksissa varmistamalla, että sovelluksesi muistin käyttö pysyy tehokkaana ja vakaana.
Viittaukset:[1] https://doordash.
.
[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-release/
.
[7] https://www.donnywals.com/using-xcodes-memory-graph-to-find-memory-leaks/
[8] https://www.mvvmcross.com/mvvmcross-6.0.0-release/
[9.