Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Jak mohu odladit nulové odkazové výjimky při vázání pohledů v mvvmcross


Jak mohu odladit nulové odkazové výjimky při vázání pohledů v mvvmcross


Ladění nulových referenčních výjimek, když vazební pohledy v MVVMCrossu zahrnují několik kroků k identifikaci a vyřešení problému. Zde je podrobný průvodce, jak přistupovat k tomuto problému:

1. Identifikujte zdroj výjimky **

- Zkontrolujte trasování zásobníku: Trace zásobníku bude označovat, kde se vyskytuje nulová referenční výjimka. To by mohlo být podle vašeho názoru, zobrazení modelu nebo v rámci samotného MVVMCross.
- Běžné problémy: Běžné zdroje zahrnují neregistrované služby, modely nulových zobrazení nebo nesprávně nakonfigurované vazby.

2. Ověřte nastavení ViewModel a vazby **

- Inicializace ViewModel: Ujistěte se, že váš model pohledu je správně inicializován a nastaven na pohled. V MVVMCross se to obvykle děje automaticky, ale můžete jej ověřit kontrolou vlastnosti „ViewModel“ vašeho pohledu.
- Konfigurace vazby: Ujistěte se, že jsou vazby správně nakonfigurovány. K definování vazeb použijte `createBindingSet` a zajistěte, aby se typy shodovaly (např.` Mainview` a `mainviewModel`).

3. Zkontrolujte, zda nejsou odkazy na nulové vazby **

- Cesty vlastností: Zajistěte, aby cesty vlastností ve vašich vazbách byly správné a aby vlastnosti existovaly v modelu pohledu. Pokud se například vážete na `vm => vm.myProperty`, ověřte, že` myProperty` není null a je správně definován.
- Pozdní inicializace: Pokud jsou vlastnosti později inicializovány (např. V `viewDidload`), ujistěte se, že vazby budou po inicializaci aplikovány vazby.

4. Použijte zpožděnou vazbu pro dynamický obsah **

- Pokud dynamicky generujete obsah nebo ovládací prvky, zvažte použití `delayBind`, abyste zajistili, že vazby budou použity po plném vytvoření pohledu. To je zvláště užitečné při práci s vlastními ovládacími prvky nebo dynamickými seznamy.

5. Zajistěte správnou registraci IOC **

- Registrace služby: Pokud používáte služby ve vašem modelu pohledu, ujistěte se, že jsou registrovány v kontejneru IOC. MVVMCross pro tento účel používá `imvxiocprovider`.
- Inicializelastchance: Pokud provádíte registrace IOC specifické pro platformu, ujistěte se, že zavoláte `base.initializelastchance ()` Abyste se vyhnout problémům, jako jsou problémy popsané v [4].

6. Problémy s vlastní vazbou **

- Pokud používáte vlastní vazby, ověřte, že vaše cílové třídy vazby jsou správně implementovány a zaregistrovány v `setup.cs` přetvořením` filtArgetFactories`, jak je uvedeno v [5].

7. Techniky ladění **

- Bloppoints: Pomocí bodů přerušení zkontrolujte stav vašeho modelu pohledu a vazby za běhu.
- Protokolování: Umožněte protokolování MVVMCross získat podrobné informace o závazcích operacích a potenciálních chybách.

8.

- Pokud používáte `mvxasynccOmmand`, ujistěte se, že„ mvx.iocProvider “je inicializován před vytvořením příkazů, jak je popsáno v [1]. To je zásadní pro scénáře testování jednotek.

Dodržováním těchto kroků byste měli být schopni identifikovat a vyřešit většinu nulových referenčních výjimek souvisejících s vazebmi pohledu v MVVMCross.

Citace:
[1] https://stackoverflow.com/questions/53597908/mvvm-cross-null-reference-When-ninit-totest-mxvasynccommand/53618570
[2] https://stackoverflow.com/questions/56531225/problem-with-binding-to-mvxview-with-xamarin-io-and-mvvmcross
[3] https://github.com/mvvmcross/mvvmcross/issues/1378
[4] https://stackoverflow.com/questions/18954938/nullreference-exception-During-binding-with-mvvmcross
[5] https://www.mvvmcross.com/documentation/advanced/custom-data-binding
[6] https://stackoverflow.com/questions/40419789/mvvmcross-platform-exceptions-mvxException-bindingContext-is-null-druring-mvxadap/40420356
[7] https://www.mvvmcross.com/documentation/advanced/mvxnotifyTask
[8] https://www.mvvmcross.com/documentation/fundamentals/data-binding