¿Esto es una fuga bajo ARC?

Estoy usando ARC y, en un método, asigno un object de operación. ¿Causará una pérdida de memory? En caso afirmativo, ¿dónde debería configurarlo a nil ? Dentro de los bloques de finalización o después de [operation start]; ?

 AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { // success downloading file // Do something } failure:^(AFHTTPRequestOperation *operation, NSError *error) { // error downloading file // Do something else }]; [operation start]; 

Sin fuga. Esta bien Sin embargo, típicamente, referirse a la operation dentro del bloque causará un ciclo de retención. Pero parece que la API lo anticipó y pasó una copy utilizable. Supongo que puede suponer que el parámetro de bloque de operation es seguro para referirse.

Normalmente, si necesita consultar al propietario del bloque dentro del bloque, declararía una copy no retenida y se referirá a eso en su lugar …

 __unsafe_unretained BlockOwningClass *blockOwnerCopy = blockOwner; [blockOwner doBlock:^{ NSLog(@"%@", blockOwnerCopy); }]; 

No, en este caso, el sistema se encargará de la gestión de la memory sin ningún riesgo de fugas.