@interface Article : NSObject
@property (nonatomic, strong) NSString *imageURLString;
@end
@implementation Class
@synthesize imageURLString = _imageURLString;
- (void)setImageURLString:(NSString *)imageURLString {
_imageURLString = imageURLString;
//do something else
}
Habe ich den Setter korrekt überschrieben, wenn ARC aktiviert ist?
iphone
ipad
ios5
automatic-ref-counting
Rowwingman
quelle
quelle
Antworten:
Ja das ist korrekt. Ich habe auch eine Weile gebraucht, um darauf zu vertrauen, dass dies tatsächlich das Richtige ist.
Sie wissen, dass in diesem Fall die Überschreibung nicht erforderlich ist, da Sie nicht mehr tun, als der standardmäßig generierte Setter tun würde? Nur wenn Sie mehr Code hinzufügen, müssen
setImageURLString:
Sie den Setter überschreiben.quelle
Erweitern Sie die Antwort von @Pascal. Ich möchte nur hinzufügen, dass dies definitiv das Richtige ist und Sie überprüfen können, bis zu was der Code kompiliert wird. Ich habe einen Blog-Beitrag darüber geschrieben, wie man prüft, aber im Grunde wird dieser Code bis auf (ARMv7) kompiliert:
Beachten Sie den Aufruf, zu
_objc_storeStrong
dem laut LLVM dies geschieht:Um Ihre Frage zu beantworten: Ja, das ist richtig. ARC hat in der korrekten Freigabe den alten Wert hinzugefügt und den neuen Wert beibehalten.
[Wahrscheinlich überkomplizierte Antwort, aber es war nützlich zu zeigen, wie Sie diese Art von ARC-bezogenen Fragen in Zukunft selbst beantworten können]
quelle
_lineColor = [input copy];
, ja.Anruf
Das ist es
quelle