Во многих руководствах о том, как использовать блоки и GCD, всегда упоминается один совет: не сохраняйте себя в блоке.
Подробная информация при определении блока, если вы ссылаетесь на себя или ивару себя, то я остается в блоке.Поэтому обходной путь заключается в использовании модификатора __block
для получения weakSelf
или weakIvar
.
Но что плохого в том, чтобы этого не делать?Если блок сохраняет себя, он должен освободить себя, когда блок закончен (я прав об этом?).Таким образом, в конечном счете, счетчик «Я» сбалансирован.Я знаю, что если self сохраняет блок, а блок сохраняет self, это будет цикл сохранения. Ни блок, ни self не будут освобождены.Но если вы используете GCD, self не сохраняет блок, почему бы не позволить блоку сохранить себя?