Является ли использование слабых ссылок в Observers хорошей идеей? - PullRequest
3 голосов
/ 16 февраля 2011

Я реализовал класс Observable, который хранит список всех наблюдателей. Должен ли этот список содержать слабые ссылки на наблюдателей для предотвращения утечек памяти?

Что такое обычная практика?

Ответы [ 2 ]

1 голос
/ 16 февраля 2011

Не обязательно, это зависит от контекста. Некоторые наблюдатели могут просто захотеть сделать простые вещи, такие как регистрация и тому подобное, и предпочли бы, чтобы объект Observable оставался в живых. Лучше всего просто четко задокументировать ваш выбор, чтобы наблюдатели знали, нужно ли им явно отменять регистрацию.

0 голосов
/ 16 февраля 2011

Не по теме, если вы используете Rx, а не только интерфейс IObservable из .NET 4, вы должны сопоставить вызовы Subscribe с частным экземпляром Subject, поскольку он будет обрабатывать безопасность потоков и порядок вызовов для тебя. Затем вы можете позвонить On* на предмет субъекта.

По теме, подписчики управляют собственной подпиской. По меньшей мере, это означает удаление возвращаемого значения Subscribe, но в Rx подписка обычно прекращается другим оператором (таким как Take или TakeUntil).

...