Замыкания в Swift, или как использовать Closures

Пример класса, у которого свойства — функции. Кстати, первое свойство опционально, второе — нет, просто замыкание пустое.

При установке замыканий в эти свойства нужно не забыть о циклической ссылке: от класса к замыканию, и от замыкания к классу. При таком раскладе класс и замыкание никогда не будут удалены из памяти, что приведет к ее потере. Для решения проблемы утечки памяти нужно указать, что мы не хотим иметь  указатель на класс из замыкания директивой [unowned self]. Ее можно рассмотреть как опциональный указатель на self. Однако, [unowned self] гарантирует что во время жизни замыкания, указатель на self будет не nil.

Метки:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*