Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Millised on nullReferenceExceptions levinud põhjused mvvmcrossis


Millised on nullReferenceExceptions levinud põhjused mvvmcrossis


NullReferenceExcepcies levinud põhjused mvvmcrossis

NullReferenceExceptions MVVMcrossis võivad tekkida mitmest tavalisest stsenaariumist, mis on sageli seotud sellega, kuidas raamistik objektide viiteid ja köiteid käsitleb. Siin on mõned üksikasjalikud selgitused nende põhjuste kohta:

1. Initialiseerimata objektid või omadused **

NullReferenceExceptside üks levinumaid põhjuseid on pääseda juurde atribuutidele või objektide meetoditele, mida pole lähtestatud. MVVMCROSSis võib see juhtuda, kui enne vaadet sidumist ei ole viewModel või selle sees olev omadus korralikult seatud. Näiteks kui ViewModeli omadust enne sidumist ei lähtestatud, viskab sellele atribuudile juurdepääs nullReferenceException.

2. Vale ROK registreerimine **

MVVMCROSS tugineb ROK -i (kontrolli ümberpööramise) konteineri kaudu suuresti sõltuvusest süstimisest. Kui komponente ei ole ROK -i konteineris õigesti registreeritud, ei pruugi neid korralikult lahendada, põhjustades nullviiteid. See on eriti asjakohane platvormipõhiste registreerimiste kasutamisel, nagu nähtub seadistusklassi meetodil "initsiazelastchance". Põhisklassi meetodil „InitializizizeLastchance” helistamine võib põhjustada probleeme teatud platvormidel, näiteks Monotouch [1].

3. köitmiskontekst pole täielikult seatud **

MVVMcrossis tuleb enne köidete rakendamist täielikult seada sidumiskontekst. Kui siduva konteksti ei ole õigesti lähtestatud, võib vaade mudelite vaade siduda nullReferenceExceptions. See kehtib eriti vaadete loomisel programmiliselt ilma XIB -faile kasutamata [1].

4. mvx.iocprovider on null **

Kui konstrueerida selliseid käske nagu `mvxasynccommand", kui "mvx.iocprovider" on null, võib see põhjustada nullReferenceExceptions. See probleem tekib seetõttu, et ROK -i pakkujat enne kasutamist ei lähtestatud, mis on ühiku testides tavaline probleem, kus ROK -i seadistust ei pruugi täielikult teostada [3].

5. Null-tingimustega operaatorite vale kasutamine **

Ehkki see pole MVVMCROSS-i spetsiifiline, võib null-tingimustega operaatorite (`? Enne pesastatud omadustele juurdepääsu saamiseks on ahela kõik osad korralikult lähtestatud.

6. puuduvad põhiklassi kõned **

MVVMCROSSi seadistusklassides võib põhiklassi meetodite (näiteks `intionastchange`) kutsumata jätmine põhjustada vajalike komponentide mittetäielikku initsialiseerimist, mille tulemuseks on NULL -i viited käitusajal [1].

NullReferenceExceptions ennetamine

Nende erandite vältimiseks veenduge, et kõik objektid ja omadused oleks enne kasutamist õigesti lähtestatud. Veenduge, et ROK -i registreerimised on õiged ja vajadusel nimetatakse baasklassi meetodeid. Lisaks võib nullkontrolli ja null-tingimustega operaatorite kasutamine aidata neid erandeid vältida, vältides null viiteid vähendamise katseid.

Tsitaadid:
]
]
]
[4] https://pvs-studio.com/en/blog/posts/csharp/1049/
]
]
[7] https://github.com/mvvmcross/mvvmcross/issues/3115
[8] https://www.mvvmcross.com/documentation/fundamentals/data-binding