ब्लॉक करता है मेरे ऐप के लिए, मैं कोर डेटा स्टोर से काफी सारी वस्तुएं ला रहा हूं, इससे ऐप को सभी यूआई इनपुट को फ्रीज और ब्लॉक करने का कारण बनता है। जब मैं ऐप उत्तरदायी रहता हूं और डेटा उपलब्ध होने पर tableview
अपडेट करता हूं, तो मैं पृष्ठभूमि में फ़ेचिंग करना चाहता हूं।
इस उद्देश्य के लिए मैंने को NSPrivateQueueConcurrencyType
के साथ एक नया सेटअप किया है और इसे मुख्य एमओसी के बच्चे के रूप में बनाया है। जबकि मेरा सेटअप वांछित ऑब्जेक्ट्स लौट रहा है, ऐसा लगता है कि सभी प्रसंस्करण अभी भी यूआई को फ्रीज कर रहा है और पुराने कोड के साथ प्रतिक्रिया में लगभग कोई फर्क नहीं पड़ता है, जहां मुख्य कतार में सब कुछ हो रहा था।कोर डेटा पृष्ठभूमि प्रसंस्करण अभी भी यूआई
इस article के मुताबिक बच्चे के संदर्भ सेटअप यूआई को उत्तरदायी रखने में मदद नहीं करते हैं, जबकि नेट पर हर जगह मैंने पढ़ा है, अगर आप भारी प्रसंस्करण से मुख्य कतार को छुटकारा दिलाना चाहते हैं तो यह तरीका है? क्या मैं कुछ भूल रहा हूँ ?
NSManagedObjectContext *mainMOC = self.mainObjectContext;
NSManagedObjectContext *backgroundMOC = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
[backgroundMOC setParentContext:mainMOC];
[backgroundMOC performBlock:^{
//query for objects
NSArray *results = [Product MR_findAllInContext:backgroundMOC];
NSError *childError = nil;
[backgroundMOC save:&childError];
if ([results count] > 0) {
//get objectIDs
NSMutableArray *objectIDs = [NSMutableArray array]
for (NSManagedObject *object in results) {
[objectIDs addObject:[object objectID]];
}
[mainMOC performBlock:^{
//refetch objects on the mainQueue
NSMutableArray *persons = [NSMutableArray array]
for (NSManagedObjectID *objectID in objectIDs) {
[persons addObject:(Person*)[mainMOC objectWithID:objectID]];
}
//return result
if (self.callBack)
self.callBack(persons);
}];
}
}];
मेरा सुझाव है कि आप डब्ल्यूडब्ल्यूडीसी 2013 वीडियो "कोर डेटा प्रदर्शन अनुकूलन और डिबगिंग" देखें जो इस सामान के बारे में बात करता है। –
अगर ऐसा है, तो आईओएस 5 पर एक बग था, जहां यूएस को फ्रीज किया गया था, जहां मुख्य संदर्भ को एनएसएफटेड रीसेट्स कंट्रोलर द्वारा समर्थित किया गया था, इसे देखें [कोर डेटा नेस्टेड प्रबंधित ऑब्जेक्ट संदर्भ और लगातार डेडलॉक्स-फ्रीज] (http : //stackoverflow.com/questions/11786436/core-data-nested-managed-object-contexts-and-frequent-deadlocks-freezes) – Leonardo
यदि आपका कोड मुख्य संदर्भ पर एक बच्चे के संदर्भ का उपयोग करके बुलाया जाता है और एक प्रदर्शनब्लॉक बेकार है , कृपया सुनिश्चित करें कि आपके पेस्ट किए गए कोड को मुख्य थ्रेड –