@interface Article : NSObject
@property (nonatomic, strong) NSString *imageURLString;
@end
@implementation Class
@synthesize imageURLString = _imageURLString;
- (void)setImageURLString:(NSString *)imageURLString {
_imageURLString = imageURLString;
//do something else
}
Правильно ли я переопределил сеттер, когда включен ARC?
iphone
ipad
ios5
automatic-ref-counting
rowwingman
источник
источник
Ответы:
Да, это правильно. Также мне потребовалось время, чтобы поверить, что это действительно правильный поступок.
Вы понимаете, что в этом случае переопределение не требуется, поскольку вы не делаете больше, чем сделал бы стандартный сгенерированный сеттер? Только если вы добавите больше кода
setImageURLString:
, вам нужно будет переопределить сеттер.источник
Расширяя ответ, данный @Pascal, я просто хотел бы добавить, что это определенно правильное решение, и вы можете проверить, посмотрев, до чего компилируется код. Я написал сообщение в блоге о том, как проводить проверку, но в основном этот код компилируется до (ARMv7):
Обратите внимание на вызов,
_objc_storeStrong
который, согласно LLVM, делает следующее:Итак, отвечая на ваш вопрос, да, правильно. ARC добавила правильную версию старого значения и сохранила новое значение.
[Наверное, слишком сложный ответ, но подумал, что было бы полезно показать, как вы можете в будущем ответить себе на подобные вопросы, связанные с ARC]
источник
_lineColor = [input copy];
, да.Вызов
это оно
источник