Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kā atkļūdot nulles atsauces izņēmumus, kad saistoši skati mvvmcross


Kā atkļūdot nulles atsauces izņēmumus, kad saistoši skati mvvmcross


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