@interface Article : NSObject
@property (nonatomic, strong) NSString *imageURLString;
@end
@implementation Class
@synthesize imageURLString = _imageURLString;
- (void)setImageURLString:(NSString *)imageURLString {
_imageURLString = imageURLString;
//do something else
}
¿Anulé correctamente el configurador cuando ARC está habilitado?
iphone
ipad
ios5
automatic-ref-counting
Rowwingman
fuente
fuente
Respuestas:
Si eso es correcto. También me tomó un tiempo confiar en que esto es lo correcto.
¿Se da cuenta de que en este caso, la anulación no es necesaria ya que no hace más de lo que haría el establecedor generado estándar? Solo si agrega más código
setImageURLString:
, necesitará anular el establecedor.fuente
Ampliando la respuesta dada por @Pascal, solo me gustaría agregar que definitivamente es lo correcto y puede verificar viendo en qué se compila el código. Escribí una publicación de blog sobre cómo realizar la verificación, pero básicamente ese código se compila en (ARMv7):
Tenga en cuenta la llamada a la
_objc_storeStrong
que según LLVM hace esto:Entonces, para responder a su pregunta, sí, es correcto. ARC ha agregado la liberación correcta del valor anterior y la retención del nuevo valor.
[Probablemente una respuesta demasiado complicada, pero pensé que era útil mostrar cómo puede responder usted mismo a este tipo de preguntas relacionadas con ARC en el futuro]
fuente
_lineColor = [input copy];
, sí.Llamada
Eso es
fuente