Como asumí, esto debería funcionar bien para objeto inmutable bajo ARC:Objective-C objeto inmutable copyWithZone: compatible con ARC realización
- (id) copyWithZone:(NSZone *)zone {
return self;
}
Pero si necesito copia profunda, yo debería escribir algo como esto:
- (id) copyWithZone:(NSZone *)zone {
Immutable *copy = [[Immutable alloc] initWithStr:str];
return copy;
}
Entonces, si asumí que es correcto, ARC entendería la situación (1) y (2) y tomaría la decisión correcta sobre "+1" para las referencias.
¿Estoy en lo cierto?
Creo que ARC básicamente trata a todos los objetos que regresan y se liberan automáticamente con la excepción de 'alloc ~' y 'copy ~'. Trato todos los objetos que regresan bajo ARC son '' retenidos '' y '' guardados '' semánticamente. Y solo agrega uno más -retain' para alloc y copy cases. Como resultado, se pueden eliminar una retención y una liberación automática, y solo se conservará una retención ... – Eonil