MVVMCROSS: n viivebind` -menetelmää ei käytetä suoraan nollaviitepoikkeusten ratkaisemiseen. Sen sijaan on mekanismi, jolla viivästyy näkymien sitoutumista, kunnes näkymä on ladattu ja valmis. Tämä voi epäsuorasti auttaa välttämään nollaviitepoikkeuksia varmistamalla, että sitoutuminen yritetään vain silloin, kun kaikki tarvittavat komponentit alustetaan asianmukaisesti.
Kuinka viivebind toimii
`DivelBind` käytetään tyypillisesti skenaarioissa, joissa näkymän asettelu tai säätimet luodaan dynaamisesti tai ladataan asynkronisesti. Sen avulla voit viivästyttää sitomisprosessia, kunnes näkymä on täysin valmis, mikä voi estää yrityksiä sitoutua nollaviitteisiin.
Tässä on yleinen lähestymistapa `viivealueen käyttämiseen:
1. Asetus: Näkemyksessäsi määrität käyttöliittymän elementit ja niiden siteet `viivealueella`. Tätä menetelmää ei sovelleta välittömästi sidoksia; Sen sijaan se ajoittaa ne käytettäväksi myöhemmin.
2. Näytä valmistelu: Kun näkymä on ladattu kokonaan ja kaikki käyttöliittymäelementit alustetaan, MVVMCross käyttää automaattisesti viivästyneitä sidoksia. Tämä varmistaa, että sidoksia yritetään vain silloin, kun kaikki tarvittavat komponentit ovat saatavilla.
3. Sidossovellus: Jos jokin sitoutumispolun osa on nolla, voi silti esiintyä nollaviitepoikkeusta. Kuitenkin viivästymällä sitomista, kunnes näkymä on valmis, vähennät ennenaikaisten sitoutumisyritysten johtuen nollaviittausten kohdalla.
nolla -viitepoikkeusten ratkaiseminen
Vaikka `viivealot 'auttaa järjestämään ja ajoittamaan sitoutumisprosessia, nollaviitepoikkeusten ratkaiseminen sisältää tyypillisesti sen varmistamisen, että kaikki sitoutumiseen osallistuvat esineet alustetaan asianmukaisesti ennen niiden sitomista. Tässä on joitain strategioita, joilla vältetään nollaviite poikkeukset:
- Varmista, että ViewModel on asetettu: Varmista, että ViewModel on asetettu näkymään oikein ennen sitomista. Tämä voidaan varmistaa tarkistamalla ViewModel -ominaisuus näkymän elinkaarimenetelmissä, kuten `ViewDidLading` iOS: lle tai" oncreate "-sovellukselle Androidille.
- Tarkista sitoutumispolut: Varmista, että näkökulmassa sitovat ominaisuudet eivät ole nollaa. Jos he ovat, varmista, että ne alustetaan ennen sitomista.
- Käytä puolustavaa ohjelmointia: Toteuta koodisi tarkistukset mahdollisten nollaviitteiden käsittelemiseksi. Tähän voi kuulua NULL-ehdollisten operaattorien ("?"
- Vältä ennenaikaisen sidontaa: käytä `viivealueita 'tai vastaavia mekanismeja varmistaaksesi, että sidoksia sovelletaan vain, kun näkymä ja sen komponentit on täysin alustettu.
Yhteenvetona voidaan todeta, että vaikka `Delatebind` auttaa ajoittamaan sitomisprosessia oikein, se ei ratkaise suoraan nollaviitepoikkeuksia. Sen sijaan se auttaa sitoutumisprosessin järjestämisessä vähentääkseen tällaisten poikkeusten kohtaamisen todennäköisyyttä varmistamalla, että sidoksia sovelletaan, kun näkymä on valmis.
Viittaukset:.
[2] https://www.mvvmcross.com/mvvmcross-9.0.0-release/
.
[4] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[5] https://stackoverflow.com/questions/27925522/correct-use-of-delaybind-in-mvvmcross
[6] https://pvs-studio.com/en/blog/posts/csharp/1049/
[7] https://www.mvvmcross.com/documentation/fundamentals/linking
[8] https://github.com/mvvmcross/mvvmcross/issues/1508