NULL atsauces izņēmumu atkļūdošana Ja saistošie skati MVVMCROSS ietver vairākas darbības, lai identificētu un atrisinātu problēmu. Šeit ir detalizēts ceļvedis par to, kā tuvināties šai problēmai:
1. Nosakiet izņēmuma avotu **
- Pārbaudiet kaudzes izsekošanu: kaudzes izsekošana norādīs, kur notiek nulles atsauces izņēmums. Tas varētu būt jūsu skatījumā, skatīt modeli vai pašā MVVMCROSS ietvaros.- Kopīgi jautājumi: Parastie avoti ietver nereģistrētus pakalpojumus, nulles skata modeļus vai nepareizi konfigurētus iesiešanas gadījumus.
2. Pārbaudiet ViewModel un iesiešanas iestatīšanu **
- ViewModel inicializācija: pārliecinieties, vai jūsu skata modelis ir pareizi inicializēts un iestatīts skata. MVVMCROSS tas parasti notiek automātiski, bet jūs varat to pārbaudīt, pārbaudot sava skata īpašību “ViewModel”.- Iesiešanas konfigurācija: pārliecinieties, vai iesiešana ir pareizi konfigurēta. Izmantojiet `CreateBindingset`, lai definētu iesiešanas un pārliecinātos, ka tipi sakrīt (piemēram,“ Mainview` un `MainviewModel`).
3. Pārbaudiet, vai nav atsauces uz iesiešanu **
- Īpašuma ceļi: pārliecinieties, vai jūsu iesieto īpašumu ceļi ir pareizi un vai īpašības pastāv skata modelī. Piemēram, ja jūs saistāties ar `vm => vm.myproperty`, pārbaudiet, vai“ myproperty ”nav nulle un ir pareizi definēts.- Vēlā inicializācija: ja īpašības tiek inicializētas vēlāk (piemēram, “ViewDidload”), pārliecinieties, ka iesiešana tiek piemērota pēc inicializācijas.
4. Izmantojiet aizkavētu iesiešanu dinamiskam saturam **
- Ja jūs dinamiski ģenerējat saturu vai vadīklas, apsveriet iespēju izmantot `DELACTBIND”, lai nodrošinātu iesiešanas pielietojumu pēc skata pilnībā izveidošanas. Tas ir īpaši noderīgi, strādājot ar pielāgotām vadības ierīcēm vai dinamiskiem sarakstiem.5. Pārliecinieties, ka pareiza SOK reģistrācija **
- Pakalpojuma reģistrācija: ja jūsu skata modelī izmantojat pakalpojumus, pārliecinieties, vai tie ir reģistrēti SOC konteinerā. MVVMCROSS šim nolūkam izmanto `imvxiocprovider`.- IniciizELastChance: ja veicat platformas specifiskas SOK reģistrācijas, pārliecinieties, ka jūs saucat par “base.initializelastChance ()`, lai izvairītos no tādiem jautājumiem kā tie, kas aprakstīti [4].
6. Pielāgotas saistīšanas problēmas **
- Ja jūs izmantojat pielāgotus iesiešanas gadījumus, pārbaudiet, vai jūsu mērķa saistīšanas klases ir pareizi ieviestas un reģistrētas "Setup.cs", ignorējot "FillTargetFactories", kā parādīts [5].7. atkļūdošanas paņēmieni **
- pārtraukuma punkti: izmantojiet pārtraukuma punktus, lai pārbaudītu jūsu skata modeļa stāvokli un iesiešanas kārtību izpildlaikā.- Mežizstrāde: iespējot MVVMCROSS reģistrēšanu, lai iegūtu detalizētu informāciju par saistošām darbībām un iespējamām kļūdām.
8.
- Ja izmantojat `mvxasynccommand`, pārliecinieties, ka` mvx.iocprovider` tiek inicializēts pirms komandu izveidošanas, kā aprakstīts [1]. Tas ir ļoti svarīgi vienības pārbaudes scenārijiem.Veicot šīs darbības, jums vajadzētu būt iespējai identificēt un atrisināt lielāko daļu NULL atsauces izņēmumu, kas saistīti ar skatu saistījumiem MVVMCross.
Atsauces:[1] https://stackoverflow.com/questions/53597908/mvvm-cross-null-references-when-unit-testing-mxvasynccommand/53618570
[2] https://stackoverflow.com/questions/56531225/problem-with-binding-to-mvxview-with-xamarin-ios-and-mvmcross
[3] https://github.com/mvvmcross/mvvmcross/issues/1378
[4] https://stackoverflow.com/questions/18954938/nullReference
[5] https://www.mvvmcross.com/documentation/advanced/custom-data saistoši
.
[7] https://www.mvvmcross.com/documentation/advanced/mvxnotifyTask
[8] https://www.mvvmcross.com/documentation/fundamentals/data