Как настроить переменные, которые фиксирует лямбда-выражение в Vala?
Как захватитьthis
только слабо в анонимной функции?
Я не смог найти в документации ничего относительно того, можно ли (или как) изменить параметры, захваченные анонимной функцией / лямбда-выражением. Проблема в том, что эти функции, кажется, захватывают все переменные из стекового фрейма, в котором они созданы, по крайней мере по умолчанию. В частности, они всегда захватываютthis
, что проблематично при использовании их для обработчиков сигналов, потому что обработчики превращаются в жесткие ссылки наthis
затем, вероятно, вызывая референсные циклы.
Есть ли у Vala какой-то механизм, как предотвратить лямбды от жестких ссылокthis
? В настоящее время я создаю новый класс для каждого обработчика сигнала, напримерA.Handler
где я только держу слабую ссылку на фактическуюthis
изA
на который мне нужно ссылаться из обработчика, но я думаю, что это подрывает преимущества лямбда-выражений.