Сборка мусора объекта, который зарегистрирован на событие
У меня есть объект просмотра, который инициализирует другой объект, объект creditCard, и регистрируется на событие, которое вызывает creditCard. Если вид объекта не будет иметь ссылки на него. Это будет мусор? или я должен отписаться, чтобы это произошло?
2 ответа
Вам нужно будет отменить подписку на объект, подлежащий сборке мусора.
"Причина проста для объяснения: в то время как обработчик событий подписан, издатель события содержит ссылку на подписчика через делегат обработчика событий (при условии, что делегат является методом экземпляра)". - /questions/38950234/pochemu-i-kak-izbezhat-utechek-pamyati-v-obrabotchike-sobyitij/38950252#38950252
Когда ваш creditCard
объект подписывается на событие ti будет ссылаться на ваш объект просмотра. Например creditCard.Event += MyEvent...
и это эквивалентно creditCard.Event += this.MyEvent...
где this
будет ссылаться наview
объект, поэтому вы должны отказаться от подписки, чтобы быть сборщиком мусора.