@interface Article : NSObject
@property (nonatomic, strong) NSString *imageURLString;
@end
@implementation Class
@synthesize imageURLString = _imageURLString;
- (void)setImageURLString:(NSString *)imageURLString {
_imageURLString = imageURLString;
//do something else
}
Apakah saya mengganti penyetel dengan benar saat ARC diaktifkan?
iphone
ipad
ios5
automatic-ref-counting
rowwingman
sumber
sumber
Jawaban:
Ya, ini benar. Aku juga butuh beberapa saat untuk percaya bahwa ini memang hal yang benar untuk dilakukan.
Anda menyadari bahwa dalam kasus ini, penggantian tidak diperlukan karena Anda tidak melakukan lebih dari yang akan dilakukan penyetel yang dibuat standar? Hanya jika Anda menambahkan lebih banyak kode,
setImageURLString:
Anda perlu mengganti penyetel.sumber
Memperluas jawaban yang diberikan oleh @Pascal Saya hanya ingin menambahkan bahwa itu pasti hal yang benar untuk dilakukan dan Anda dapat memeriksa dengan melihat apa yang dikompilasi kode. Saya menulis posting blog tentang bagaimana cara memeriksa, tetapi pada dasarnya kode itu dikompilasi ke (ARMv7):
Perhatikan panggilan
_objc_storeStrong
yang menurut LLVM melakukan ini:Jadi, untuk menjawab pertanyaan Anda, ya itu benar. ARC telah menambahkan dalam rilis yang benar dari nilai lama dan mempertahankan nilai baru.
[Mungkin jawaban yang terlalu rumit, tetapi menurut saya berguna untuk menunjukkan bagaimana Anda bisa menjawab pertanyaan terkait ARC semacam ini untuk diri Anda sendiri di masa mendatang]
sumber
_lineColor = [input copy];
, ya.Panggilan
Itu dia
sumber