मैं उद्देश्य-सी और एक्सकोड के लिए नया हूं, लेकिन मुझे यह देखकर खुशी हुई कि एक्सकोड 4.4 स्वचालित रूप से मेरे लिए मेरे गुणों को संश्लेषित करता है। मुझे लगता है कि इसका मतलब है कि मुझे अब मेरे गुणों के लिए @ सिंथेसाइज टाइप करना होगा, और उदाहरण के लिए,का उपयोग करके उन्हें एक्सेस करना होगा।स्वचालित संपत्ति xcode 4.4 कार्य में कैसे संश्लेषित करती है?
मैं कुछ उदाहरण कोड फिर से लिखने की कोशिश कर रहा हूं ताकि मैं इसे बेहतर समझ सकूं, लेकिन यह कोड एक कस्टम गेटर विधि लागू करता है। उदाहरण कोड में, संपत्ति मैन्युअल रूप से संश्लेषित की जाती है, @synthesize managedObjectContext = __managedObjectContext;
के रूप में। कस्टम गेटर इस तरह दिखता है:
- (NSManagedObjectContext *)managedObjectContext {
if (__managedObjectContext != nil) {
return __managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
__managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
[__managedObjectContext setPersistentStoreCoordinator:coordinator];
}
return __managedObjectContext;
}
इस व्यक्ति के कोड में, मैं वह बस अपना मैन्युअल संश्लेषित एक्सेसर उपयोग कर रहा है दोनों हो और स्थापित करने के लिए देखते हैं। मैंने अपने कोड में पाया, मैं __managedObjectContext
को self.managedObjectContext
के साथ प्रतिस्थापित कर सकता था, लेकिन नहीं। अगर मैं ऐसा करता हूं, तो मुझे यह बताते हुए एक त्रुटि मिलती है कि मैं readonly
संपत्ति को असाइन करने का प्रयास कर रहा हूं। यह समझ में आता है, क्योंकि इस संपत्ति को इस अन्य कोडर द्वारा, केवल पढ़ने के रूप में परिभाषित किया गया है।
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
तो, मैं कैसे वह मैन्युअल उसकी संपत्ति synthesizing के बारे में कुछ मतलब है कि अगर वह उस निर्दिष्ट सेटर का उपयोग करता है, उसे एक केवल पढ़ने के लिए संपत्ति किसी भी तरह स्थापित करने के लिए अनुमति देता है आंकड़ा।
यदि मैं मैन्युअल रूप से संपत्ति को संश्लेषित करता हूं, जैसे कोड मैं संदर्भित कर रहा हूं, तो सब कुछ काम करने के लिए वापस चला जाता है, लेकिन यह नए स्वचालित संश्लेषण का उपयोग नहीं कर रहा है। अगर मैं readonly
हटा देता हूं, तो मैं इस संपत्ति को अपेक्षित के रूप में सेट कर सकता हूं, लेकिन मुझे लगता है कि मुझे समझ में नहीं आ रहा है कि उसे इसे पढ़ने के लिए क्यों है, इसलिए मैं शर्त लगाता हूं कि मैं वहां कुछ तोड़ रहा हूं।
तो, क्या मैं नए स्वचालित संश्लेषण का गलत उपयोग कर रहा हूं? अगर मैं पाठक के कारण स्वचालित संश्लेषण इसे मेरे लिए नहीं बना रहा हूं, तो मैं इसे सेटटर का उपयोग करके कैसे सेट करूं?
आप
वह सीधे ivar तक पहुंचता है। एक "_" – Pochi