Mam mały sqlitedb na moim urządzeniu z iOS. Gdy użytkownik naciśnie przycisk, pobieram dane z sqlite &, aby pokazać je użytkownikowi.Początek wątku na iOS
Ta część pobierania chcę to zrobić w wątku tła (aby nie blokować głównego wątku interfejsu użytkownika). Robię to tak jak -
[self performSelectorInBackground:@selector(getResultSetFromDB:) withObject:docids];
Po ściągam & trochę obróbki, muszę zaktualizować UI. Ale ponieważ (jako dobra praktyka) nie powinniśmy wykonywać aktualizacji UI z wątków w tle. Nazywam selector
na mainthread jak tak -
[self performSelectorOnMainThread:@selector(showResults) withObject:nil waitUntilDone:NO];
Ale mój App awarii w pierwszym etapie. to jest uruchamianie wątku tła. Czy to nie jest sposób na uruchamianie wątków w tle w iOS?
UPDATE 1: Po [self performSelectorInBackground....
otrzymuję ten StackTrace, żadnej informacji, co tak zawsze -
UPDATE 2: Próbowałem nawet rozpoczynając wątek tła jak tak - [NSThread detachNewThreadSelector:@selector(getResultSetFromDB:) toTarget:self withObject:docids];
ale wciąż mam ten sam stacktrace.
Wystarczy więc, że wyjaśnienie, kiedy wykonać tę operację na wątku głównym wszystko działa gładkie ...
UPDATE 3 Jest to metoda Próbuję uruchomić od tła
- (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;
}
dziennika Co błąd/awaria nie masz? – jtbandes
Proszę zobaczyć moje aktualizacje ... –
Czy możesz pokazać metodę, którą wywołujesz w tle? I upewnij się, że obiekt 'docids' jest zachowany. – Rog