Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Ako môžem ladiť nulové referenčné výnimky pri záväzných zobrazeniach v MVVMCross


Ako môžem ladiť nulové referenčné výnimky pri záväzných zobrazeniach v MVVMCross


Ladenie nulových referenčných výnimiek pri záväzných zobrazeniach v MVVMCross zahŕňa niekoľko krokov na identifikáciu a vyriešenie problému. Tu je podrobný sprievodca, ako pristupovať k tomuto problému:

1. Identifikujte zdroj výnimky **

- Skontrolujte sledovanie zásobníka: sledovanie zásobníka bude označovať, kde sa vyskytuje výnimka z referenčnej výnimky NULL. To by mohlo byť vo vašom zobrazení, zobrazení modelu alebo v samotnom MVVMCross.
- Bežné problémy: Bežné zdroje zahŕňajú neregistrované služby, modely NULL View alebo nesprávne nakonfigurované väzby.

2. Overenie nastavenie ViewModel a väzby **

- Inicializácia ViewModel: Uistite sa, že je váš zobrazovací model správne inicializovaný a nastavený v zobrazení. V MVVMCross sa to zvyčajne deje automaticky, ale môžete si ho overiť kontrolou vlastnosti „ViewModel` vo vašom zobrazení.
- Konfigurácia viazania: Uistite sa, že viazania sú správne nakonfigurované. Použite „CreateBindingSet` na definovanie väzieb a zabezpečenie toho, aby sa typy zhodovali (napr.` MainView` a `MainViewModel`).

3. Skontrolujte nulové referencie v väzbách **

- Cesty vlastností: Uistite sa, že cesty vlastníctva vo vašich väzbách sú správne a že vlastnosti existujú na modeli pohľadu. Napríklad, ak ste viazaní na `vm => vm.MyProperty`, overte, či„ myProperty` nie je null a je správne definovaný.
- Neskorá inicializácia: Ak sa vlastnosti inicializujú neskôr (napr. V `ViewDidAad`), uistite sa, že sa po inicializácii aplikujú väzby.

4. Použite oneskorenú väzbu pre dynamický obsah **

- Ak dynamicky generujete obsah alebo ovládacie prvky, zvážte použitie `oneskorenia 'na zabezpečenie aplikovania väzieb po úplnom vytvorení pohľadu. Toto je užitočné najmä pri práci s vlastnými ovládacími prvkami alebo dynamickými zoznamami.

5. Uistite sa, že správna registrácia IOC **

- Registrácia služieb: Ak používate služby vo vašom modeli View, uistite sa, že sú registrované v kontajneri MOV. MVVMCross používa na tento účel `imvxiocprovider`.
- InitializelastChance: Ak robíte registrácie IOC špecifických pre platformu, uistite sa, že zavoláte `base.initializelastChance ()„ Aby ste sa vyhli problémom, ako sú problémy opísané v [4].

6.

- Ak používate vlastné väzby, overte, či sú vaše cieľové väzbové triedy správne implementované a zaregistrované v `setup.cs` prepísaním` fillTargetFactories`, ako je uvedené v [5].

7. Techniky ladenia **

- Prerušovacie body: Použite body prerušenia na kontrolu stavu modelu vášho pohľadu a viazania za behu.
- Protokolovanie: Povoľte protokolovanie MVVMCross, aby ste získali podrobné informácie o väzbových operáciách a potenciálnych chybách.

8.

- Ak používate `mvxasynccommand`, uistite sa, že pred konštrukciou príkazov je inicializovaný` mvx.iocprovider ", ako je opísané v [1]. To je rozhodujúce pre scenáre testovania jednotiek.

Podľa týchto krokov by ste mali byť schopní identifikovať a vyriešiť väčšinu nulových referenčných výnimiek týkajúcich sa väzbových viazaní v MVVMCross.

Citácie:
[1] https://stackoverflow.com/questions/53597908/MVVM-Cross-null-references-wen-unit-testing-mxvasynccommand/53618570
[2] https://stackoverflow.com/questions/56531225/problem-with-binding-to-mvxview-with-xamarin-ios-and-mvvmcross
[3] https://github.com/mvvmcross/mvvmcross/issues/1378
[4] https://stackoverflow.com/questions/18954938/NULLREFEFICE-EXECT-DURING-BINDING-WITH-MVVMCROS
[5] https://www.mvvmcross.com/documentation/advanced/custom-data-binding
[6] https://stackoverflow.com/questions/40419789/mvvmcross-platform-exceptions-mvxException-bindingContext-is-null-nul-during-mvxadap/40420356
[7] https://www.mvvmcross.com/documentation/advanced/mvxnotifyTask
[8] https://www.mvvmcross.com/documentation/funmamentals/data-binding