Блоки захватывают (сохраняют) объекты, на которые вы ссылаетесь извне.
операция сохранит завершениеБлок, который сохранит операцию, следовательно, цикл сохранения.
Лучше всего создать слабую ссылку на объект и передать вместо нее
AFHTTPRequestOperation * __weak theOperation = operation
operation.completionBlock = ^{
if (theOperation) {
return;
}
};
Слабые ссылки безопасны во время выполнения, поэтому, если операция была отменена, вы просто отправите сообщение на ноль.