2010-11-19 22 views
0

Bir özelliğim var:Değere hiçbir başvuru kaydedilmediğinde, özellik @ özellikleri kullanılmalıdır?

@property(readwrite, ?????) NSDate *selectedDate; 

Erişimciler şunun gibidir:

NSCalendar _calendar; 
NSDateComponents _selectedDateComponents; 

@dynamic selectedDate; 
- (void)setSelectedDate:(NSDate *)newDate 
{ 
    @synchronized(_selectedDateComponents) 
    { 
     if (!newDate) return; 

     [_selectedDateComponents release]; 
     int requiredComponents = NSDayDateComponent | NSMonthDateComponent | NSYearDateComponents; 
     _selectedDateComponents = [[_calendar components: requiredComponents fromDate:newDate] retain]; 
    } 
} 

- (NSDate *)selectedDate 
{ 
    @synchronized(_selectedDateComponents) 
    { 
     if (!_selectedDateComponents) return nil; 

     return [_calendar dateFromComponents:_selectedDateComponents]; 
    } 
} 

Sınıf, diziye gönderilen nesneye bir başvuruda bulunmaz. Xzx40, copy veya assign'nin hiçbiri uygun görünmüyor. Bir mülk olarak kapsüllenmiş bu işlevselliğe sahip olmayı seviyorum ama belki bir özellik uygun değil.

Görüşünüz nedir?

cevap

2

Kendi belirleyicilerinizi yazıyorsanız, ne kullandığınız önemli değildir. Sadece kendinize/diğer geliştiricilere nasıl çalıştığına dair bir ipucu olarak hizmet eder.

Özellik yalnızca, @synthesize tarafından oluşturulan yöntemleri gerçekten etkiler. Yani kendi yöntemlerinizi sağlarsanız, koruma stratejisini kendiniz belirlersiniz ve beyanı oluşturan emlak stratejisi çoğunlukla göz ardı edilir.

Bu durumda, kopya kullanırdım. Çünkü, doğrudan bir kopyasını kullanmıyorken, nesneden geçirilmiş olandan gelen değeri depolar ve bu nesneye engelsiz bir şekilde depolarsınız. Yani, bilgiyi farklı bir formatta kopyalıyorsunuz. Ama derleyici umurunda olduğu gibi, hiç de önemli değil. Kendi ayarlayıcınızı yazarken sadece göstermek içindir.