SupongamosEn ARC, ¿se copian automáticamente los bloques cuando se asignan a un ivar a través de la propiedad?
typedef void (^MyResponseHandler) (NSError *error);
@property (strong, nonatomic) MyResponseHandler ivarResponseHandler;
synthesize ivarResponseHandler = _ivarResponseHandler;
- (void)myMethod:(MyResponseHandler)responseHandler
{
self.ivarResponseHandler = responseHandler;
...
}
es la asignación a la Ivar a través de la @property
correcta? Sé que en la gestión manual de la memoria habría necesitado self.ivarResponseHandler = [responseHandler copy];
para asegurarse de que el bloque se haya copiado de la pila al montón. Pero al ver la Sesión 322 - Avances del Objetivo-C en profundidad (minuto 25) de la WWDC 2011, el orador dice que ARC maneja automáticamente la asignación de un bloque a un ivar. Sólo quería estar seguro.
No responde la pregunta directamente. Pero creo que usaré este patrón en mi código ahora. – bearMountain
(dos años más tarde) Acabo de hacer una pregunta muy similar que responde la tuya: [¿Debo seguir copiando/bloqueando los bloques en ARC?] (Http://stackoverflow.com/questions/23334863). La conclusión general de la respuesta es que la forma para escribir propiedades para bloques, esta respuesta aceptada aquí, es absolutamente correcta y correcta incluso en los días actuales. –