2010-10-07 5 views
0

J'ai un programme qui fonctionne normalement. Ensuite, j'ai téléchargé du code de http://github.com/matej/MBProgressHUD pour afficher un indicateur de progression lorsque je fais quelque chose.L'objet passe de NSMutableArray à NSData à NSString

C'est le code qui fait apparaître la barre de progression.

[HUD showWhileExecuting:@selector(myTask) onTarget:self withObject:nil animated:YES]; 

Cela montrera un indicateur de progression alors que la méthode myTask est en cours d'exécution.

Ceci est le code de la méthode showWhileExecuting.

- (void)showWhileExecuting:(SEL)method onTarget:(id)target withObject:(id)object animated:(BOOL)animated { 

    methodForExecution = method; 
    targetForExecution = [target retain]; 
    objectForExecution = [object retain]; 

    // Launch execution in new thread 
    taskInProgress = YES; 
    [NSThread detachNewThreadSelector:@selector(launchExecution) toTarget:self withObject:nil]; 

    // Show HUD view 
    [self show:animated]; 
} 

Si je l'utiliser pour appeler la fonction myTask puis une de mes propriétés de classe va changer d'un NSMutableString à un objet NSData quelque part, puis plus tard il passera à un NSString. Je ne vois nulle part dans le code qui change cela, donc c'est probablement une sorte de bug. La mémoire est-elle corrompue? Qu'est-ce qui cause cela?

Répondre

3

Il s'agit probablement d'une mémoire (problème de conservation/libération). Si vous ne retenez pas correctement un objet, il se peut qu'il ne soit plus sous vous. À ce stade, la mémoire sera récupérée par le système d'exploitation, qui peut décider d'y stocker autre chose. Essayez d'allumer NSZombies, et vérifiez vos retenues/libérations/autoreleases.

+0

Lorsque j'allume NSZombies, je peux voir que l'objet se transforme en NSZombie NSArray. –