2010-11-08 16 views
12

Hem kitaplarda hem de web'de, çeşitli kod parçalarına bakarken dürüstlüğün uygulanması söz konusu olduğunda biraz karışıklık fark ettim. Benim sorum ise, aşağıdakilerden hangisinin kullanabileceğimi @ mülkiyeti kullanmaktır. Şimdiye kadar VERSION_001 kullanıyordum.dealloc, özellikler için sürüm kullanabilir veya sıfırlanır mı?

@property(nonatomic, retain) NSString *name; 
@property(nonatomic, retain) NSString *type; 
@property(nonatomic, retain) NSString *payload; 
@property(nonatomic, retain) NSString *orbit; 

VERSİYONU 001

- (void)dealloc { 
    [name release]; 
    [type release]; 
    [payload release]; 
    [orbit release]; 
    [super dealloc]; 
} 

VERSİYONU Eğer @synthesize anahtar kelime kullanarak değil sürece hiçbir gerçek fark var 002

- (void)dealloc { 
    [self setName:nil]; 
    [self setType:nil]; 
    [self setPayload:nil]; 
    [self setOrbit:nil]; 
    [super dealloc]; 
} 

cevap

17

. Özellikleri nil olarak ayarladığınızda, ayarlayıcı tarafından sahnelerin ardında bırakılırlar. Şimdi, yumruk versiyonunun üzerinde küçük bir performans artışı olabilir, çünkü sahnelerin arkasında çok fazla bir şey olmamalıdır (örneğin, işaretçi karşılaştırması ve sahnelerin arkasına saklanan diğer her şey). Her zaman 001 sürümünü kullanırım, çünkü bu noktaya göre daha fazladır ve gelecekteki geliştiricilerin ne yaptığımı anlamaya çalışmam için kodum olmasına gerek yok.

+0

Teşekkürler, sadece neyim peşindeyim, çok minnettarım. – fuzzygoat

+1

Sorun değil, her zaman, sadece cevabı kabul etmeyi unutmayın :) –

+3

Sürüm 1'in 2'nin üzerindeki sürümünün büyük bir avantajı, eğer bazı günlerde bu özelliklerden biri için ayarlayıcıyı bazı önemsiz olmayan işler yapmak için değiştirirseniz, Sürüm 1'deki performansa veya olası yanlış davranışa maruz kalmayacaksınız. Sürüm 2, kodunuzdaki hataları bir gün fark etmeden kolayca başlatabilir. – Ryan

İlgili konular