Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Quais são as vantagens do uso de referências fracas em assinaturas de eventos MVVMCROSS


Quais são as vantagens do uso de referências fracas em assinaturas de eventos MVVMCROSS


O uso de referências fracas nas assinaturas de eventos MVVMcross oferece várias vantagens, centradas principalmente no gerenciamento de memória e evitando vazamentos de memória. Aqui estão os principais benefícios:

1. Prevenção de vazamentos de memória **

Uma das principais vantagens do uso de referências fracas é que elas ajudam a evitar vazamentos de memória. Nos modelos de assinatura de eventos tradicionais, se um assinante (por exemplo, uma visualização) não cair de maneira adequada a partir de um evento (por exemplo, em um modelo de exibição), ele pode permanecer na memória mesmo depois de não ser necessário. Isso ocorre porque a fonte do evento mantém uma forte referência ao assinante, impedindo que ele seja coletado de lixo. Referências fracas resolvem esse problema, permitindo que o coletor de lixo recupere a memória se o assinante não for mais referenciado em outras partes do aplicativo [3] [6].

2. Gerenciamento simplificado de assinatura **

Referências fracas simplificam o gerenciamento das assinaturas de eventos. Em aplicações complexas com muitas fontes e assinantes de eventos, rastrear e cancelar a inscrição manualmente dos eventos pode se tornar complicado. O padrão de eventos fraco automatiza esse processo removendo os assinantes quando não são mais necessários, reduzindo a complexidade do gerenciamento de assinaturas [3].

3. Decomprância de viewmodels e visualizações **

No MVVMcross, o uso de referências fracas ajuda a manter uma separação limpa entre modelos de exibição e vistas. Ao garantir que os modelos de visualização não mantenham fortes referências a pontos de vista, você evita que as visões sejam mantidas vivas desnecessariamente. Esse desacoplamento é crucial para manter uma arquitetura robusta e escalável, pois permite que as visualizações sejam coletadas de lixo quando não estiverem mais em uso [2] [4].

4. Flexibilidade no manuseio de eventos **

Referências fracas fornecem flexibilidade nos cenários de manuseio de eventos. Eles permitem o uso de sistemas de mensagens, como o plug -in MVVMCross Messenger, que se baseia em referências fracas para assinatura de eventos. Essa flexibilidade é benéfica em cenários em que a identidade da fonte do evento não é conhecida ou quando é preferida uma abordagem mais orientada a mensagens [5].

No entanto, é importante observar que, embora as referências fracas ofereçam essas vantagens, elas também introduzem algumas complexidades e questões em potencial, como o problema "zumbi" mencionado em algumas discussões. Isso ocorre quando um assinante ainda não é coletado de lixo, mas ainda é referenciado fracamente, potencialmente levando a um comportamento inesperado se o manipulador de eventos for invocado [1]. Apesar desses desafios, as referências fracas continuam sendo uma ferramenta valiosa no gerenciamento de assinaturas de eventos de maneira eficaz em aplicativos MVVMcross.

Citações:
[1] https://ladimolnar.com/2015/09/14/the-weak-event-pattern-is-dangerous/
[2] https://stackoverflow.com/questions/19378470/weak-referencing-in-mvvmcross-with-actiont
[3] https://mustafacanyucel.com/blog/blog-22.html
[4] https://gregshackles.com/weak-subscription-gutcha-in-mvvmcross/
[5] https://www.mvvmcross.com/documentation/plugins/messenger
[6] https://learn.microsoft.com/en-us/dotnet/desktop/wpf/events/weak-event-patterns?view=netdesktop-9.0
[7] https://stackoverflow.com/questions/310685/weak-reference-benefits
[8] https://github.com/mvvmcross/mvvmcross/issues/1480