Подтвердить что ты не робот

Почему отправка сообщения вызывает предупреждение цикла сохранения в ARC, но набор свойств не работает?

[self.foo setBlock:^{
    [self doSomething]; // causes warning
}];

против

[self.foo setBlock:^{
    self.bar = baz;     // does not cause warning
}];

Предупреждение о том, что "Capturing self сильно в этом блоке, вероятно, приведет к циклу сохранения".

Разве оба не приводят к сильной ссылке?

4b9b3361

Ответ 1

Это ошибка компилятора, и вы должны подать отчет об ошибке с Apple.

Оба одинаковы, a.b = c - это просто другой способ записи [a setB: c]. Если компилятор обрабатывает одно иначе, это ошибка.