2011-10-28 27 views

cevap

89

Evet, bu doğru. Ayrıca bunun gerçekten yapılması gereken doğru şey olduğuna güvenmek için biraz zaman harcadım.

Bu durumda, standart oluşturulan ayarlayıcıdan daha fazlasını yapmadığınız için geçersiz kılma gerekli değildir, farkında mısınız? Yalnızca setImageURLString:'a daha fazla kod eklerseniz, ayarlayıcıyı geçersiz kılmanız gerekir.

+6

Evet. Bunu anladım. Ek kodumu eklemek istediğim yorumu ekliyorum. Cevap için çok teşekkür ederim. – rowwingman

+4

Oh, doğru, üzgünüm, bu yorumu cömertçe göz ardı ettim. :) – Pascal

+4

İlginç bir deney ne olurdu biliyor musun? Yorum rengini değiştirme (SO ve diğer siteler ve IDE'ler) ... genellikle açık gri veya göze çarpmayan bir şeydir. # ff0000 belki? Fark eder mi? Programcıların, bir şeyin nasıl çalıştığını özellikle anlamaya çalışmadıkça, yorumları görmezden gelmek için kullanılırız. Bu durumda, bazen onları da görmezden geliriz. – figha

68

@Pascal tarafından verilen yanıtı genişletmek istiyorum. Bunu yapmak kesinlikle doğru bir şey olduğunu eklemek istiyorum ve kodun ne için derlendiğini kontrol ederek kontrol edebilirsiniz. according to LLVM yapar _objc_storeStrong çağrısı

 .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} 

Not: Ben tashihi gitmek, ama temelde bu kodu (ARMv7) aşağı derler konusunda bir blog post yazdı Yani

id objc_storeStrong(id *object, id value) { 
    value = [value retain]; 
    id oldValue = *object; 
    *object = value; 
    [oldValue release]; 
    return value; 
} 

, cevap sorunuz, evet doğru. ARC, eski değerin doğru şekilde çıkarılmasını ve yeni değerin korunmasını eklemiştir.

+1

Bunun için teşekkürler, kodumu (ve bu cevabı) tahmin ediyordum ama korkularımı dinlendiriyorsun. – evanflash

+0

Çok faydalı cevap! –

+1

Teşekkürler Matt. 43. seçmen olmak doğru gelmiyordu, çünkü 42 bu cevap için bu kadar uygun bir oyundu. – bmauter

-10

Çağrı [Muhtemelen karmaşık cevap üzerinde, ancak ileride kendiniz için ARC ilgili soruya bu tür yanıtlayan nasıl gidebiliriz göstermek yararlı olduğunu düşündü]

bu kadar

[super setImageURLString:theString]; 

+1

superclass setImageURLString bir uygulama olması muhtemel değildir: –

+0

Olsa bile, muhtemelen bunu yapmak istemediğiniz şeyler yapar. –