Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Vai, izmantojot MVXView un MVXViewController, ir kādas kopīgas nepilnības


Vai, izmantojot MVXView un MVXViewController, ir kādas kopīgas nepilnības


Izmantojot MVXView` un `MVXViewController` MVVMCross, var rasties vairākas kopīgas nepilnības. Izpratne par šiem jautājumiem var palīdzēt izstrādātājiem izvairīties no tām un nodrošināt vienmērīgāku attīstību.

1. tipa konvertēšanas jautājumi **

Viena izplatīta problēma ir tipa konvertēšana. MVVM modelī ViewModel definētās īpašības, iespējams, nav tieši patērējamas lietotāja saskarne. Piemēram, attēla īpašums varētu būt baitu masīvs, bet lietotāja saskarne to sagaida kā attēla avotu. MVVMCROSS nodrošina “IMVXValueConverter” saskarni, lai apstrādātu šādus reklāmguvumus, bet tas prasa liešanu, kas var būt apgrūtinoša. Generic `mVXValueConverter` klase palīdz, ļaujot skaidri norādīt ievades un izvades veidus [1].

2. dzīves cikla pārvaldība **

Sākot ar MVVMCROSS 5.0, ViewModels ir savienots ar skata dzīves ciklu, nodrošinot tādas metodes kā `parādās ()`, `parādās ()`, `pazūd ()` un "pazuda ()". Kaut arī šīs metodes piedāvā lielāku kontroli pār ViewModel stāvokli, tās nav 100% uzticamas, un tās var ietekmēt platformas specifiski notikumi vai pielāgota lietotņu loģika [2] [7]. Ir ļoti svarīgi nodrošināt pareizu šo dzīves cikla notikumu apstrādi.

3. Iesiešanas jautājumi **

Var rasties saistošas ​​problēmas, it īpaši, ja tiek izmantoti pielāgoti skati vai vadība. Piemēram, ja pirms ViewModel datiem ir izveidota pielāgota vadība, “Datacontext” varētu būt nulle. Izmantojot `DelayBind`, tas var palīdzēt to atrisināt, aizkavējot iesiešanu, līdz dati ir pieejami [4].

4. ViewModels atkārtota izmantojamība **

ViewModels MVVMCross, it īpaši iOS, var cieši savienot ar konkrētiem skatiem, samazinot to atkārtotu izmantojamību. Tas notiek, ja ViewModels apstrādā skatu specifisku loģiku, piemēram, etiķešu formatēšana vai tabulas skatījumu datu avoti. Lai no tā izvairītos, saglabājiet skatu modeļus, kas koncentrējas uz biznesa loģiku un izmantojiet pārveidotājus vai citus mehānismus, lai apstrādātu skatam specifiskas pārvērtības [3].

5. platformai specifiska navigācija **

MVVMCROSS atbalsta starpplatformu navigāciju, taču katrai platformai ir unikāli prezentācijas modeļi. Piemēram, iOS, izmantojot scenāriju ekrāna plūsmas scenārijus, var būt pretrunā ar MVVMCross starpplatformu pieeju. Vislabāk ir apstrādāt navigācijas loģiku ViewModel un izmantot platformas specifiskos vadītājus, lai pārvaldītu skatījumu parādīšanu [5] [9].

6. Linkera drošība **

MVVMCROSS nav linker-drošs, kas nozīmē, ka kontakta daļas kompilācijas laikā var izņemt saites. Tas var izraisīt izpildlaika kļūdas. Lai to novērstu, jums ir jāuzmeklē saite, lai saglabātu nepieciešamās sistēmas daļas [6].

Apzinoties šīs iespējamās nepilnības, izstrādātāji var labāk orientēties `MVXView` un` MVXViewController` izmantošanas sarežģītībā MVVMCross lietojumprogrammās.

Atsauces:
[1] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvm-apps-with-xamarin-and-mvmcross
[2] https://www.mvvmcross.com/mvvmcross-5-Release/
[3] https://www.danielhall.io/theproblems-with-mvvm-on-ios
:
[5] https://kerry.lothrop.de/ios-ui-with-mvvmcross/
[6] https://github.com/mvvmcross/mvvmcross/issues/4286
[7] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[8] https://stackoverflow.com/questions/45966067/mvvmcross-iphone-and-ipad-best-pracices
[9] https://www.mvvmcross.com/documentation/fundamentals/view-presenters