Если говорить о системах с GC, должна ли операция добавления обработчика к событию
b.signal += a.slot
создавать сильную или слабую ссылку на a? (сильная — значит b держит a, пока не сделают -= или их не подберет GC; слабая — при сборке `a` соединение само собой разорвется).
Какие есть большие системы, реализованные обоими способами? Какие достоинства/недостатки у каждого подхода? Особенно интересно, чем каждый подход оборачивается в неидеальных командах, где не все ошибки исключаются на этапе проектирования.