2013-02-19 14 views
10

मैं गैर-एआरसी से एआरसी में एक कोड परिवर्तित कर रहा था, और कुछ अनावश्यक @ सिंथेसाइज कॉल को हटा रहा था। एक विशिष्ट वर्ग कुछ संपत्तियों के लिए चेतावनी जारी करना शुरू:संपत्ति को परिभाषित करने की विधि की आवश्यकता है

Class.h

@property (strong, nonatomic) NSString *xyz; 

लेकिन जब निर्माण, मैं चेतावनी मिलती है।

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

मैंने सोचा था कि Xcode 4.6 और का उपयोग करने और डिफ़ॉल्ट एप्पल LLVM संकलक 4.2, @properties ऑटो संश्लेषित किया जाना चाहिए।

मैं संकलक को संपत्ति को स्वतः संश्लेषित करने के लिए कैसे कहूं? क्या मुझे इस चेतावनी को हटाने के लिए एक विशिष्ट प्रोजेक्ट कॉन्फ़िगरेशन का उपयोग करना है?

+0

क्या आपके पास पहले से ही 'setXyz:' विधि है? – rmaddy

उत्तर

35

क्या यह संपत्ति NSManagedObject उपclass पर है? NSManagedObject ऑटो-संश्लेषण को ठीक से अक्षम करता है क्योंकि अधिकांश घोषित गुण @dynamic होने की उम्मीद है।

यह NS_REQUIRES_PROPERTY_DEFINITIONS मैक्रो के साथ @interface NSManagedObject से पहले रखा गया है, जो __attribute__((objc_requires_property_definitions)) तक फैला हुआ है। इसका इस्तेमाल अन्य वर्गों पर भी किया जा सकता है, लेकिन NSManagedObject एकमात्र ढांचा वर्ग है जिसे मैं जानता हूं।

+0

वास्तव में यह है! यही मुद्दा था, मुझे 'NSManagedObject' कक्षा के साथ इस विशिष्टता को नहीं पता था। –

संबंधित मुद्दे