Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Vai atmiņas grafika rīks var palīdzēt noteikt saglabāt ciklus MVVMCROSS lietojumprogrammās


Vai atmiņas grafika rīks var palīdzēt noteikt saglabāt ciklus MVVMCROSS lietojumprogrammās


Jā, Xcode atmiņas grafika rīks var palīdzēt noteikt saglabāšanas ciklus MVVMCROSS lietojumprogrammās. Lūk, kā tas darbojas un kā to var piemērot MVVMCROSS:

Izpratne par saglabāt ciklus

Saglabāt ciklus rodas, ja divi vai vairāki objekti satur spēcīgas atsauces viens uz otru, neļaujot tiem tikt galā no atmiņas. Tas ir izplatīts jautājums iOS izstrādē, it īpaši, ja tiek izmantoti delegāti vai slēgšana, kas stingri uztver objektus.

Izmantojot atmiņas grafika rīku

1. Lietotnes palaišana un momentuzņēmumu ņemšana: Lai izmantotu atmiņas grafika rīku, palaidiet savu MVVMCROSS lietojumprogrammu Xcode un pārvietojieties pa tās galvenajām plūsmām. Veiciet atmiņas momentuzņēmumus dažādos punktos, it īpaši pēc navigācijas no skatiem vai skatīt modeļus, kas būtu jānovērš.

2. Momentuzņēmumu analīze: Atmiņas grafika atkļūdotājs kreisais panelis parāda visus atmiņā esošos objektus, kā arī to gadījumu skaitu. Meklējiet objektus, kuriem vajadzēja būt noslēgtiem, bet joprojām ir klāt. Klases gadījumu skaita palielināšanās laika gaitā var norādīt uz saglabāšanas ciklu.

3. Saglabāšanas ciklu identificēšana: kreisajā panelī atlasiet objektu, lai apskatītu tā objekta grafiku. Diagrammā parādītas atsauces, kas objektu uztur atmiņā. Bold līnijas norāda uz spēcīgām atsaucēm, savukārt gaiši pelēkas līnijas norāda uz nezināmām atsaucēm (kas varētu būt vājas vai spēcīgas). Ja redzat cilpu, kurā objekti spēcīgi atsaucas viens uz otru, tas, iespējams, ir saglabāšanas cikls.

4. Saglabāšanas ciklu fiksēšana: Kad esat identificējis saglabāšanas ciklu, pārskatiet kodu, lai atrastu, kur tiek izveidotas spēcīgās atsauces. Bieži vien tas ietver spēcīgas atsauces uz vājām atsaucēm, it īpaši delegātiem vai slēgšanai.

Piesakoties MVVMCROSS

MVVMCROSS lietojumprogrammās skata modeļi ir cieši saistīti ar skatu dzīves ciklu. Tas dažreiz var izraisīt saglabāt ciklus, ja tas netiek pareizi pārvaldīts. Piemēram, ja skata modelim ir spēcīga atsauce uz skatu, un skats arī satur spēcīgu atsauci uz skata modeli (iespējams, caur saistošo), var notikt saglabāšanas cikls.

Lai no tā izvairītos no MVVMCross, pārliecinieties, ka visas atsauces no skatiem, lai skatītu modeļus, ir vāji. Izmantojiet dzīves cikla metodes, kuras nodrošina MVVMCROSS (piemēram, “pazuda”), lai sakoptu visas spēcīgās atsauces, kad tiek noraidīti viedokļi. Turklāt izmantojiet atmiņas diagrammas rīku, lai pārbaudītu, vai skatu modeļi tiek pareizi noslēgti, ja viņu saistītie skati tiek noņemti no navigācijas kaudzes.

Saglabāšanas ciklu identificēšanas piemērs MVVMCROSS

Pieņemsim, ka jums ir `MyViewModel`, kas ir saistīts ar“ MyView ”. Ja `MyView` ir cieša atsauce uz` MyViewModel`, un `MyViewModel` ir arī spēcīga atsauce uz“ MyView` (iespējams, caur delegātu vai slēgšanu), jūs redzētu, ka abi objekti paliek atmiņā pat pēc navigācijas no “MyView”. Izmantojot atmiņas grafika rīku, jūs identificētu šo ciklu un pēc tam modificētu kodu, lai vajadzības gadījumā izmantotu vājas atsauces.

Veicot šīs darbības un izmantojot atmiņas diagrammas rīku, jūs varat efektīvi identificēt un atrisināt saglabāt ciklus MVVMCROSS lietojumprogrammās, nodrošinot, ka jūsu lietotnes atmiņas lietošana joprojām ir efektīva un stabila.

Atsauces:
[1.]
[2] https://careersatdoordash.com/blog/ios-memory-leaks-and-retain-cycle-decection-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-Release/
[6] https://stackoverflow.com/questions/54040726/mvvmcross-android-apears-to-be-keep-hold-of-viewmodels-and-never-Disponsting-w
[7] https://www.donnywals.com/using-xcodes-memory-graph-to-find-memory-liaks/
[8] https://www.mvvmcross.com/mvvmcross-6.0.0-rease/
[9] https://stackoverflow.com/questions/41660486/knowing-where-retain-cycles-are-and-removing-them