ARC, блоки и циклы удержания

Работа над проектом iOS, ориентированным на 4.0 и 5.0, с использованием ARC.

Столкнувшись с проблемой, связанной с блоками, ARC и ссылкой на объект снаружи блока. Вот некоторый код:

 __block AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
   [operation setCompletionBlock:^ {
       if ([operation isCancelled]) {
           return;
       }

... do stuff ...

operation = nil;
}];

В этом случае компилятор выдает предупреждение, что использование «операции» в блоке приведет к циклу сохранения. В ARC __block теперь сохраняет переменную.

Если я добавлю __unsafe_unretained, компилятор немедленно освободит объект, так что, очевидно, это не сработает.

Я нацеливаюсь на 4.0, поэтому я не могу использовать __weak.

Я пытался сделать что-то вроде этого:

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
__block __unsafe_unretained AFHTTPRequestOperation *weakOperation = operation;

но, несмотря на то, что weakOperation не равен nil, ни одно из его свойств не заполняется внутри блока.

Как лучше всего справиться с этой ситуацией, учитывая ограничения проекта, перечисленные выше?