मेरे पास कुछ कोर डेटा कार्यक्षमता है जो कुछ हालिया (प्रतीत होता है कि असंबद्ध) परिवर्तन किए जाने तक ठीक काम कर रहा था। अब मुझे समस्याएं आ रही हैं जहां किसी विशेष NSManagedObject सबक्लास उदाहरण से संबंधित सभी गुण अचानक शून्य लौट रहे हैं।कोर डेटा विशेषता शून्य में बदलती है (एआरसी संबंधित?)
मान लें कि मेरे एनएसएमएनेज्ड ऑब्जेक्ट सबक्लास को फू कहा जाता है और इसमें केवल एक विशेषता है जिसे मूल्य कहा जाता है। एक बार मुझे एहसास हुआ कि मूल्य किसी भी तरह से शून्य हो रहा था, मैं मूल्य में बदलावों की निगरानी के लिए निम्न श्रेणी चला गया और सेटअप किया।
@implementation Foo (Debug)
- (void)setValue:(NSDate *)value
{
[self willChangeValueForKey:@"value"];
[self setPrimitiveValue:value forKey:@"value"];
[self didChangeValueForKey:@"value"];
}
- (NSDate *)value
{
[self willAccessValueForKey:@"value"];
NSDate *value = [self primitiveValueForKey:@"value"];
[self didAccessValueForKey:@"value"];
return value;
}
@end
setValue: मेरे वस्तु के लिए कहा जाता है और दिया गया तर्क एक गैर शून्य NSDate है। फिर मान पुनर्प्राप्त किया जाता है (किसी अन्य विधि में)। निर्दिष्ट किया गया वही मान सही ढंग से पुनर्प्राप्त किया गया है।
हालांकि जब कोई अन्य विधि मान पढ़ने की कोशिश करती है, तो मूल्य एक्सेसर को कॉल किया जाता है और शून्य मूल्य को primitiveValueForKey द्वारा वापस किया जाता है:।
दोनों के बीच में सेट पढ़ा गया है: कॉल नहीं किया गया है और फू ऑब्जेक्ट स्वयं अभी भी मान्य है (गैर-शून्य)। वास्तव में किसी भी कोर डेटा ऑब्जेक्ट या संपूर्ण संदर्भ में दोनों पढ़ने के बीच कोई अन्य कोर डेटा ऑपरेशन नहीं किया जाता है।
हम अपने प्रोजेक्ट में एआरसी का उपयोग कर रहे हैं। क्या यह संभव है कि एआरसी किसी भी तरह से मेरे कोर डेटा चर के साथ गड़बड़ कर रहा है और उन्हें हटा रहा है? यदि ऐसा है तो क्या किसी के पास एआरसी विध्वंस डीबग करने के लिए कोई सुझाव है? या बेहतर अभी तक, क्या कोई यह सुनिश्चित करने का तरीका जानता है कि एआरसी मेरे चर को निष्क्रिय नहीं करता है।
यह एआरसी से भी संबंधित नहीं हो सकता है, हालांकि मुझे क्या हो रहा है इसके बारे में कुछ नुकसान हुआ है। किन्हीं भी सुझावों को स्वीकार किया जाएगा।
एआरसी अभी भी एनडीए के तहत है, इसलिए हम ऐप्पल के प्रतिबंधित मंचों के बाहर इसकी चर्चा नहीं कर सकते हैं। – TechZen
[एआरसी एनडीए के तहत नहीं है।] (Http://lists.cs.uiuc.edu/pipermail/cfe-dev/2011-June/015588.html) –
कोई भी मौका आप दो अलग-अलग धागे पर दो अलग-अलग धागे पर काम कर रहे हैं वस्तु की प्रतियां? अन्यथा, क्या आप वाकई एक ही वस्तु है? क्या आप दो नहीं बना रहे हैं? या आपने अपना संदर्भ रीसेट नहीं किया है या अन्यथा आपके परिवर्तनों को बीच में खो दिया है? –