ARC, bloqueia e retém ciclos

Trabalhando em um projeto iOS direcionado para 4.0 e 5.0, usando o AR

Correndo para um problema relacionado a blocos, ARC e referenciando um objeto de fora do bloco. Aqui está um código:

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

... do stuff ...

operation = nil;
}];

Nesse caso, o compilador avisa que o uso de 'operação' no bloco levará a um ciclo de retenção. No ARC, __block agora mantém a variável.

Se eu adicionar __unsafe_unretained, o compilador libera o objeto imediatamente, então obviamente isso não funcionar

Estou segmentando 4.0, então não posso usar __weak.

Tentei fazer algo assim:

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

mas enquanto a operação fraca não for nula, nenhuma de suas propriedades será preenchida quando estiver dentro do bloc

Qual é a melhor maneira de lidar com essa situação, considerando as restrições do projeto listadas acim

questionAnswers(2)

yourAnswerToTheQuestion