2013-02-19 34 views
10

tanımlanacak bir yöntem gerektirir ARC olmayan bir kod dönüştürmek için ARC ve bazı gereksiz @synthesize çağrıları kaldırarak. Bir belirli sınıfı bazı özellikler için uyarılar çıkarmaya başladı:Özellik,

Class.h

@property (strong, nonatomic) NSString *xyz; 

ama oluştururken, ben uyarı olsun.

Property 'xyz' requires method 'xyz'to be defined - use @synthesize, @dynamic or provide a method implementation in this class implementation 

Apple LLVM derleyici 4.2 Xcode 4.6 ve kullanma ve Standart, @properties otomatik sentezlenmiş olması gerektiğini düşündük.

Derleyiciye özelliği otomatik olarak sentezlemesini nasıl söyleyebilirim? Bu uyarıyı kaldırmak için belirli bir proje yapılandırması kullanmalı mıyım?

+0

Zaten bir 'setXyz:' yönteminiz var mı? – rmaddy

cevap

35

Bu özellik bir NSManagedObject alt sınıfında mı? NSManagedObject, otomatik sentezini tam olarak devre dışı bırakır çünkü çoğu bildirilen özelliklerin @dynamic olması beklenir.

Bu, __attribute__((objc_requires_property_definitions))'a genişleyen @interface NSManagedObject'dan hemen önce yerleştirilen NS_REQUIRES_PROPERTY_DEFINITIONS makrosu ile gerçekleştirilir. Bu, diğer sınıflarda da kullanılabilir, ancak NSManagedObject, bunun olduğunu bildiğim tek çerçeve sınıfıdır.

+0

Gerçekten de öyle! Sorun buydu, bu özelliği 'NSManagedObject' sınıfı ile bilmiyordum. –

İlgili konular