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