Sobes.tech
Middle

Mis juhtub, kui Router omadus jääb ainult viiteks ilma avaldatud märgistuseta, ja selle uuendamiseks on vaja seda initsialiseerida?

sobes.tech AI

Vastus AI-lt

Kui Router omadus on deklareeritud kui tavaline viide ilma @Published märgistuseta, siis SwiftUI või Combine ei jälgi automaatselt selle omaduse muudatusi ning ei algata seotud vaadete või tellijate uuendamist.

See tähendab, et Routeri sees oleva oleku muutmisel ei uuendata kasutajaliidest, kuna reaktiivse uuendamise mehhanism ei aktiveeru. Uuendamise alustamiseks peate kas käsitsi kutsuma uuendusmeetodid või kasutama @Published või muud mehhanismi, mis teatab muudatustest.

Näiteks, kui Router on klass sisemiste muudetavate omadustega, siis ilma @Published-ita ei edastata muudatusi väljapoole ning kasutajaliides jääb vanasse olekusse.