मेरे आईओएस डिवाइस में मेरे पास एक छोटा sqlitedb है। जब कोई उपयोगकर्ता बटन दबाता है, तो मैं डेटा को SQLite & से उपयोगकर्ता को दिखाता हूं।आईओएस पृष्ठभूमि थ्रेड शुरू करें
यह fetching भाग मैं इसे पृष्ठभूमि धागे में करना चाहता हूं (UI मुख्य थ्रेड को अवरुद्ध नहीं करने के लिए)। मैं तो इस तरह करते हैं - प्रसंस्करण का एक छोटा सा
[self performSelectorInBackground:@selector(getResultSetFromDB:) withObject:docids];
प्राप्त करने में कठिनाई & के बाद, मैं यूआई अपडेट करना होगा। लेकिन चूंकि (एक अच्छी प्रैक्टिस के रूप में) हमें पृष्ठभूमि धागे से यूआई अपडेट नहीं करना चाहिए। मैं तो जैसे mainthread पर एक selector
कहते हैं -
[self performSelectorOnMainThread:@selector(showResults) withObject:nil waitUntilDone:NO];
लेकिन मेरे अनुप्रयोग पहले चरण में दुर्घटनाओं। यानी पृष्ठभूमि धागा शुरू करना। क्या यह आईओएस में पृष्ठभूमि धागे शुरू करने का कोई तरीका नहीं है?
अद्यतन 1:[self performSelectorInBackground....
के बाद मैं इस स्टैकट्रेस, कोई जानकारी क्या इतना कभी मिलता है -
अद्यतन 2: मैं भी कोशिश की, जैसे एक पृष्ठभूमि धागा शुरू कर इतना - [NSThread detachNewThreadSelector:@selector(getResultSetFromDB:) toTarget:self withObject:docids];
लेकिन अभी भी मुझे एक ही स्टैकट्रैक मिलता है।
बस इतना है कि मैं स्पष्ट है, जब मैं मुख्य थ्रेड सब कुछ पर इस कार्रवाई को चिकनी ...
अद्यतन 3 इस विधि मैं पृष्ठभूमि
- (void)getResultSetFromDB:(NSMutableArray *)toProceessDocids
{
SpotMain *mirror = [[SpotMain alloc] init];
NSMutableArray *filteredDocids = toProceessDocids;
if(![gMediaBucket isEqualToString:@""])
filteredDocids = [mirror FetchDocIdsForMediaBucketWithDocID:filteredDocids mBucket:gMediaBucket numRes:-1];
if(![gMediaType isEqualToString:@""])
filteredDocids = [mirror FetchDocIdsForMediaType:filteredDocids mediaType:gMediaType numRes:-1];
if(![gPlatform isEqualToString:@""])
filteredDocids = [mirror FetchDocIdsForPlatformID:filteredDocids platformId:@"1" numRes:-1];
self.resultSet = [mirror FetchObjectFromDocid:filteredDocids];
[filteredDocids release];
[mirror release];
[self performSelectorOnMainThread:@selector(showResults) withObject:nil waitUntilDone:NO];
return;
}
क्या त्रुटि/क्रैश लॉग आप मिलता है में एक बार देख ले सकते हैं: एक ठेठ कार्यप्रवाह कुछ इस तरह हो सकता है? – jtbandes
कृपया मेरे अपडेट देखें ... –
क्या आप पृष्ठभूमि में जिस विधि को बुला रहे हैं उसे दिखा सकते हैं? और सुनिश्चित करें कि ऑब्जेक्ट 'docids' को बनाए रखा गया है। – Rog