Setzen Sie Setter mit Bogen außer Kraft
@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 richtig überschreiben der setter, wenn ARC aktiviert ist?
Kommentar zu dem Problem
Ja, das sieht korrekt zu mir. Ist es arbeitet, wie Sie erwarten, oder nicht?
InformationsquelleAutor der Frage rowwingman | 2011-10-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, das ist richtig. Auch ich brauchte eine Weile um zu Vertrauen, dass dies tatsächlich die richtige Sache zu tun.
Dir ist schon klar, dass in diesem Fall das überschreiben ist nicht notwendig, da Sie nicht mehr tun, als die standard-setter generiert würde? Nur, wenn Sie mehr code zu
setImageURLString:
würden Sie brauchen, um das überschreiben der setter.InformationsquelleAutor der Antwort Pascal
Erweiterung auf die Antwort von @Pascal ich möchte nur hinzufügen, dass es sich definitiv, das richtige zu tun, und Sie können überprüfen, indem man sieht, was der code wird kompiliert. Ich schrieb eine blog-post darüber, wie Sie gehen über die überprüfung, aber im Grunde, dass der code kompiliert werden, bis hin zu (ARMv7):
Beachten Sie den Aufruf
_objc_storeStrong
die nach LLVM tut:Also, um Ihre Frage zu beantworten, ja das ist richtig. BOGEN Hinzugefügt hat, in der korrekten Version von dem alten Wert und behalten von den neuen Wert ein.
[Wohl über komplizierte Antwort, aber dachte, es war nützlich zu zeigen, wie Sie gehen über die Beantwortung dieser Art von ARC-bezogene Frage für sich selbst in Zukunft]
InformationsquelleAutor der Antwort mattjgalloway
Call
Dass es
InformationsquelleAutor der Antwort raulcatena