@ প্যাসাল দ্বারা প্রদত্ত উত্তরের প্রসারিত করে আমি কেবল যুক্ত করতে চাই যে এটি অবশ্যই করা সঠিক জিনিস এবং আপনি কোডটি কীভাবে সংকলন করে তা পরীক্ষা করে দেখতে পারেন। আমি কীভাবে চেক করতে হবে সে সম্পর্কে একটি ব্লগ পোস্ট লিখেছিলাম , তবে মূলত সেই কোডটি (এআরএমভি 7) এ সংকলিত হয়েছে:
.align 2
.code 16
.thumb_func "-[Article setImageURLString:]"
"-[Article setImageURLString:]":
push {r7, lr}
movw r1, :lower16:(_OBJC_IVAR_$_Article._imageURLString-(LPC7_0+4))
mov r7, sp
movt r1, :upper16:(_OBJC_IVAR_$_Article._imageURLString-(LPC7_0+4))
LPC7_0:
add r1, pc
ldr r1, [r1]
add r0, r1
mov r1, r2
blx _objc_storeStrong
pop {r7, pc}
উল্লেখ্য কলে _objc_storeStrong
যা LLVM অনুযায়ী এই আছে:
id objc_storeStrong(id *object, id value) {
value = [value retain];
id oldValue = *object;
*object = value;
[oldValue release];
return value;
}
সুতরাং, আপনার প্রশ্নের উত্তর দিতে, হ্যাঁ এটি ঠিক। এআরসি পুরানো মানটির সঠিক প্রকাশে যুক্ত করেছে এবং নতুন মান ধরে রাখে।
[সম্ভবত জটিল উত্তরের উপর সম্ভবত, তবে ভবিষ্যতে নিজের জন্য কীভাবে এআরসি সম্পর্কিত প্রশ্নের উত্তর দেওয়ার বিষয়ে আপনি যেতে পারেন তা দেখানো কার্যকর মনে হয়েছিল]