আমার আইওএস ডিভাইসে আমার একটি ছোট স্কেলিটডব রয়েছে। যখন কোনও ব্যবহারকারী একটি বোতাম টিপেন, আমি স্ক্য্লাইট থেকে ডেটা আনব এবং এটি ব্যবহারকারীর কাছে দেখাব।
এই আনার অংশটি আমি এটি একটি পটভূমির থ্রেডে করতে চাই (ইউআই মূল থ্রেডটি ব্লক না করার জন্য)। আমি এটি এর মতো করি -
[self performSelectorInBackground:@selector(getResultSetFromDB:) withObject:docids];
আনার এবং কিছুটা প্রক্রিয়াজাতকরণের পরে, আমার ইউআই আপডেট করতে হবে। তবে (একটি ভাল অনুশীলন হিসাবে) আমাদের পটভূমির থ্রেড থেকে ইউআই আপডেট করা উচিত নয় upd আমি 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;
}
docids
বজায় রয়েছে কিনা তা নিশ্চিত করুন ।
docids
হয় retain
। আমি এর মধ্যে করা আছে .h
যেমন@property (nonatomic, retain) NSMutableArray *docids;
get
; এটি ঠিক হওয়া উচিতresultSetFromDB: