Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon MVVMCross 이벤트 구독에서 약한 참조를 사용하는 장점은 무엇입니까?


MVVMCross 이벤트 구독에서 약한 참조를 사용하는 장점은 무엇입니까?


MVVMCross 이벤트 구독에서 약한 참조를 사용하면 주로 메모리 관리 및 메모리 누출을 피하는 몇 가지 장점이 제공됩니다. 주요 이점은 다음과 같습니다.

1. 메모리 누출 예방 **

약한 참조를 사용하는 것의 주요 장점 중 하나는 메모리 누출을 방지하는 데 도움이된다는 것입니다. 기존의 이벤트 구독 모델에서 가입자 (예 :보기)가 이벤트를 제대로 구독하지 않으면 (예 :보기 모델에서) 더 이상 필요하지 않은 후에도 메모리를 유지할 수 있습니다. 이벤트 소스는 가입자에 대한 강력한 참조를 유지하여 쓰레기가 수집되는 것을 방지하기 때문입니다. 약한 참조는 가입자가 더 이상 응용 프로그램의 다른 곳에 참조되지 않으면 쓰레기 수집기가 메모리를 되 찾을 수 있도록 하여이 문제를 해결합니다 [3] [6].

2. 단순화 된 구독 관리 **

약한 참조는 이벤트 구독 관리를 단순화합니다. 많은 이벤트 소스 및 가입자가있는 복잡한 응용 프로그램에서는 이벤트에서 수동으로 추적 및 수신을 해제하는 것이 번거 롭을 수 있습니다. 약한 이벤트 패턴은 가입자가 더 이상 필요하지 않은 경우 가입자를 제거하여 구독 관리의 복잡성을 줄임 으로써이 프로세스를 자동화합니다 [3].

3. 뷰 모델과 뷰의 분리 **

MVVMCross에서 약한 참조를 사용하면보기 모델과 뷰 사이의 깨끗한 분리를 유지하는 데 도움이됩니다. View 모델이보기에 대한 강력한 참조를 유지하지 않도록함으로써, 뷰가 불필요하게 생존하는 것을 방지합니다. 이 분리는 강력하고 확장 가능한 아키텍처를 유지하는 데 중요하며, 더 이상 사용되지 않을 때 보는 가비지를 수집 할 수 있기 때문입니다 [2] [4].

4. 이벤트 처리의 유연성 **

약한 참조는 이벤트 처리 시나리오에서 유연성을 제공합니다. 이벤트 구독에 대한 약한 참조에 의존하는 MVMCross 메신저 플러그인과 같은 메시징 시스템을 사용할 수 있습니다. 이 유연성은 이벤트 소스의 신원이 알려지지 않은 시나리오에서 유익합니다.

그러나 약한 참고 자료는 이러한 장점을 제공하지만 일부 토론에서 언급 된 "좀비"문제와 같은 몇 가지 복잡성과 잠재적 문제도 소개한다는 점에 유의해야합니다. 이는 가입자가 아직 쓰레기가 수집되지 않았지만 여전히 약하게 참조되어 이벤트 핸들러가 호출되면 예상치 못한 행동으로 이어질 때 발생합니다 [1]. 이러한 과제에도 불구하고 약한 참조는 MVVMCross 응용 프로그램에서 이벤트 구독을 효과적으로 관리하는 데 귀중한 도구로 남아 있습니다.

인용 :
[1] https://ladimolnar.com/2015/09/14/the---- 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-gotcha-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