Objective-C ve XCode yeniyim ama XCode 4.4 otomatik benim için özelliklerini sentezler ki, şimdi görmekten mutlu oldu. Bunun anlamı, artık özelliklerim için @synthesize yazmam gerekmediği ve örneğin self.propertyName = @"hi";
kullanarak erişebildiğim anlamına geliyor.Otomatik özellik xcode 4.4'te nasıl çalışır?
onu senden daha iyi anlayabilmeleri için bazı örnek kodu yeniden yazmaya çalışıyorum, ama bu kod özel bir alıcı yöntemini uygular. Örnek kodda, özellik el ile @synthesize managedObjectContext = __managedObjectContext;
olarak sentezlenir. özel alıcı şuna benzer: Bu kişinin kodunda
- (NSManagedObjectContext *)managedObjectContext {
if (__managedObjectContext != nil) {
return __managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
__managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
[__managedObjectContext setPersistentStoreCoordinator:coordinator];
}
return __managedObjectContext;
}
, ben o sadece almak ve ayarlamak için hem onun elle sentezlenen erişimciyi kullanıyor görüyoruz. Kodumda düşündüm, __managedObjectContext
'u self.managedObjectContext
ile değiştirebilirim, ancak nope. Bunu yaparsam, readonly
özelliğine atamaya çalıştığımı bildiren bir hata alıyorum. Bu mantıklıdır, çünkü bu özellik diğer bir kodlayıcı tarafından salt okunur olarak tanımlanır.
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
Yani, o el mülkünü sentezleyerek nasıl hakkında bir şeyler o belirli ayarlayıcı kullanırsa, bu o şekilde bir Salt okunur özelliği ayarlamanızı sağlar anlamına gelir rakam.
Ben başvuran ediyorum kodunda, her şey çalışmaya gider gibi el, mülkiyet sentezlemek ise
, ama bu yeni otomatik sentezleneceği yararlanarak değil.readonly
'u kaldırırsam, beklediğim gibi bu özelliği ayarlayabilirim, ancak neden bu kadar okumuş olduğunu anlamamış gibi hissediyorum, bu yüzden burada bir şeyleri kırdığımı iddia ediyorum.
Yani, yeni otomatik sentezleme yanlış kullanıyorum? Otomatik sentezleme, benim için oluşturmuyorsa, setter kullanarak bunu nasıl ayarlayabilirim? XCode otomatik sentezler, aşağıdaki simüle zaman
Eğer self.foo veya object.foo ile uygun verilerine erişebilir, So ...@synthesize foo = _foo;
sizi
o doğrudan ivar erişir. birini kaldır "_" – Pochi