ARC con bloques y ciclos de retención.

Tengo una clase que contiene un bloque como una propiedad de objeto:

@property (nonatomic, readwrite, copy) SFFailureBlock failureBlock;

donde SFFailureBlock:

typedef void (^SFFailureBlock)(NSError *error);

También tengo una operación declarada como una propiedad de objeto (AFHTTPRequestOperation) y quiero que llame al bloque de falla una vez que se complete.

    [self.operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
    __weak NSError *error = [NSError errorWithDomain:@"com.test" code:100 userInfo:@{@"description": @"zero results"}];
    failureBlock(error);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"nothing");
}];

Recibo una advertencia del compilador "Capturar 'self' fuertemente en este bloque puede llevar a un ciclo de retención". He buscado en Internet, pero no pude encontrar una solución decente para explicar por qué esto conduce a un ciclo de retención. No estoy llamando "yo" dentro del bloque en ninguna parte.

Otra cosa extraña es que si escribo 'self.failureBlock (error)' el compilador no me avisa.

¿Alguien puede explicarme lo que está pasando? Debo estar perdiendo algo en serio en las reglas de administración de memoria ARC, pero no puedo resolverlo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta