5
iOSスタートバックグラウンドスレッド
iOSデバイスに小さなsqlitedbがあります。ユーザーがボタンを押すと、sqliteからデータをフェッチしてユーザーに表示します。 このフェッチ部分は、バックグラウンドスレッドで実行したい(UIメインスレッドをブロックしないため)。私はそのようにします- [self performSelectorInBackground:@selector(getResultSetFromDB:) withObject:docids]; 取得して少し処理した後、UIを更新する必要があります。ただし、(良い方法として)バックグラウンドスレッドからUIの更新を実行しないでください。私はselectorそうメインスレッドで呼び出す- [self performSelectorOnMainThread:@selector(showResults) withObject:nil waitUntilDone:NO]; しかし、私のアプリは最初のステップでクラッシュします。つまり、バックグラウンドスレッドを開始します。これはiOSでバックグラウンドスレッドを開始する方法ではありませんか? 更新1:[self performSelectorInBackground....このスタックトレースを取得した後、情報はありません- 更新2:私も試し、バックグラウンドスレッドをそのように開始しました [NSThread detachNewThreadSelector:@selector(getResultSetFromDB:) toTarget:self withObject:docids];。 明確にするために、この操作をメインスレッドで実行すると、すべてがスムーズに実行されます... UPDATE 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 …