Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kako metoda zamude pomaga pri reševanju ničelnih referenčnih izjem v mvvmcross


Kako metoda zamude pomaga pri reševanju ničelnih referenčnih izjem v mvvmcross


Metoda "zamudaBind" v mvvmcrossu se ne uporablja neposredno za odpravljanje null referenčnih izjem. Namesto tega je mehanizem za odložitev vezave pogledov, dokler pogled ni popolnoma naložen in pripravljen. To lahko posredno pomaga pri preprečevanju ničnih referenčnih izjem, tako da se zagotovi, da se vezava poskusi le, če se vse potrebne komponente pravilno inicializirajo.

Kako deluje DelayBind

`DelayBind` se običajno uporablja v scenarijih, kjer se postavitev ali krmiljenje pogleda nastaja dinamično ali naloženo asinhrono. Omogoča vam, da odložite postopek vezave, dokler ne bo pogled v celoti pripravljen, kar lahko prepreči poskuse vezave na ničelne reference.

Tu je splošen pristop k uporabi `DelayBind":

1. Nastavitev: Po vašem mnenju definirate elemente uporabniškega vmesnika in njihove vezi s pomočjo `DelayBind`. Ta metoda ne uporablja takoj vezi; Namesto tega jih načrtuje, da jih bodo uporabili pozneje.

2. Priprava pogleda: Ko je pogled v celoti naložen in so vsi elementi uporabniškega vmesnika inicializirani, bo MVVMcross samodejno uporabil zapoznele vezi. To zagotavlja, da se vezi poskušajo samo, če so na voljo vse potrebne komponente.

3. Vezavna aplikacija: Na tej točki, če je kateri koli del vezavne poti ničen, se lahko še vedno pojavi ničelna referenčna izjema. Vendar pa z odložitvijo vezave, dokler pogled ni pripravljen, zmanjšate verjetnost, da se srečate z ničelnimi referencami zaradi prezgodnjega vezanega poskusa.

Reševanje ničelnih referenčnih izjem

Medtem ko `DelayBind 'pomaga pri organizaciji in časovni povezavi vezave, ločljivost NULL referenčnih izjem običajno vključuje zagotavljanje, da se vsi predmeti, vključeni v vezavo, pravilno inicializirajo, preden jih poskušajo vezati. Tu je nekaj strategij za preprečevanje ničnih referenčnih izjem:

- Prepričajte se, da je ViewModel nastavljen: Prepričajte se, da je ViewModel pravilno nastavljen na pogledu, preden se poskusite vezati. To je mogoče preveriti s preverjanjem lastnosti ViewModel v načinih življenjskega cikla View, kot je `ViewDidload` za iOS ali` onCreate` za Android.

- Preverite vezavne poti: Preverite, ali lastnosti, na katere ste vezani v ViewModel, niso nične. Če so, se prepričajte, da so inicializirani pred vezavo.

- Uporabite obrambno programiranje: Izvedite čeke v svoji kodi za obdelavo morebitnih ničnih referenc. To lahko vključuje uporabo pogojnih operaterjev ("?") Ali izrecno preverjanje NULL pred dereferenčnimi predmeti.

- Izogibajte se prezgodnji vezavi: uporabite `DelayBind` ali podobne mehanizme, da zagotovite, da se vezi uporabijo le, če se pogled in njegove komponente v celoti inicializirajo.

Če povzamemo, medtem ko `DelayBind` pomaga pri pravilno določitvi postopka vezave, ne reši neposredno referenčnih izjem NULL. Namesto tega pomaga pri organiziranju procesa vezave, da zmanjša verjetnost, da se srečajo s takšnimi izjemami, tako da zagotovi, da se vezi uporabijo, ko je pogled pripravljen.

Navedbe:
[1] https://stackoverflow.com/questions/18954938/NullReference-Exception-during--ding-with-mvvmcross
[2] https://www.mvvmcross.com/mvvmcross-9.0.0-release/
[3] https://blog.postharp.net/nullreferenceException-object-reference-Not-set
[4] https://www.mvvmcross.com/documentation/fundamentals/data----
[5] https://stackoverflow.com/questions/27925522/correct-use-of-delayBind-in-mvvmcross
[6] https://pvs-studio.com/sl/blog/posts/csharp/1049/
[7] https://www.mvvmcross.com/documentation/fundamentals/linking
[8] https://github.com/mvvmcross/mvvmcross/isissue/1508