J'ai un petit sqlitedb dans mon appareil iOS. Lorsqu'un utilisateur appuie sur un bouton, je récupère les données de sqlite et je les montre à l'utilisateur.
Cette partie de récupération, je veux le faire dans un thread d'arrière-plan (pour ne pas bloquer le thread principal de l'interface utilisateur). Je fais ça comme ça -
[self performSelectorInBackground:@selector(getResultSetFromDB:) withObject:docids];
Après la récupération et un peu de traitement, je dois mettre à jour l'interface utilisateur. Mais puisque (comme bonne pratique), nous ne devons pas effectuer de mise à jour de l'interface utilisateur à partir des threads d'arrière-plan. J'appelle un selectorfil principal comme ça -
[self performSelectorOnMainThread:@selector(showResults) withObject:nil waitUntilDone:NO];
Mais mon application plante dans la première étape. c'est-à-dire démarrer un fil d'arrière-plan. N'est-ce pas un moyen de démarrer des threads d'arrière-plan dans iOS?
MISE À JOUR 1: Après [self performSelectorInBackground....avoir obtenu ce stacktrace, aucune information quoi que ce soit -

MISE À JOUR 2: J'ai même essayé de démarrer un fil d'arrière-plan comme celui-ci - 
 [NSThread detachNewThreadSelector:@selector(getResultSetFromDB:) toTarget:self withObject:docids];mais j'obtiens toujours le même stacktrace.
Juste pour que je clarifie, lorsque j'effectue cette opération sur le fil principal, tout se passe bien ...
MISE À JOUR 3 C'est la méthode que j'essaie d'exécuter en arrière-plan
- (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;
}
          docidsest conservé.
                docidssont retain. Je l'ai mis en .htant que@property (nonatomic, retain) NSMutableArray *docids;
                get; ça devrait juste êtreresultSetFromDB: