2010-09-17 6 views
1

J'essaie de supprimer des objets de mon NSMutableArray mais je reçois toujours l'erreur bad_access.Impossible de supprimer l'objet de NSMutableArray

J'ai utilisé "removeAllObjects" et "removeObjectAtIndex" mais aucun de ceux-ci ne fonctionne.

Si j'ajoute des objets à ce tableau, tout va bien.

Ce que je veux faire est d'effacer mon tableau avant de le remplir à nouveau.

Je n'ai pas libéré la matrice avant d'essayer de remplir.

Thx pour l'aide.

Bye

code:

[tab_Demandes removeAllObjects];

for (NSDictionary *demandeD in demandes) 
{ 

    NSInteger i=0; 


    NSString *title = [demandeD objectForKey:@"Title"]; 
    NSString *desriptif = [demandeD objectForKey:@"Description"]; 
    NSString *Id = [demandeD objectForKey:@"Id"]; 
    NSString *created = [demandeD objectForKey:@"Created"]; 
    NSString *statut = [demandeD objectForKey:@"Statut"]; 
    NSString *copropriete = [demandeD objectForKey:@"Copropriete"]; 
    NSString *immeuble = [demandeD objectForKey:@"Immeuble"]; 
    NSString *lot = [demandeD objectForKey:@"Lot"]; 
    NSString *auteur = [demandeD objectForKey:@"Author"]; 
    NSString *auteurId = [demandeD objectForKey:@"IdAuthor"]; 
    NSString *auteurLogin = [demandeD objectForKey:@"Login"]; 


    Demande *dem =[[Demande alloc] init];  
    dem.demTitle=title; 
    dem.demId=Id; 
    dem.demCreated=created; 

    NSString *descriptifDecode = [desriptif stringByReplacingPercentEscapesUsingEncoding: 
            NSASCIIStringEncoding];  

    dem.demDescriptif=descriptifDecode; 
    dem.demIdCopro=copropriete; 
    dem.demIdImmeuble=immeuble; 
    dem.demIdLot=lot; 
    dem.demStatut=statut; 
    dem.demAuteur=auteur; 
    dem.demIdAuteur=auteurId; 
    dem.demLoginAuteur=auteurLogin; 


    //[tab_Demandes replaceObjectAtIndex:i withObject:dem]; 
    //i=i+1; 



    [tab_Demandes addObject:dem]; 

    //[dem release]; 
} 

Quand dois-je libérer les objets que j'ajoute à l'onglet si j'ai besoin de les supprimer plus tard? à cause de fuites de mémoire.

+0

comment ajoutez-vous des objets au tableau? – Vladimir

+0

Salut Vladimir, j'utilise – wallou

+0

[array addObject: obj]; – wallou

Répondre

1

Ce n'est pas que vous avez libéré le tableau, c'est qu'un (ou plusieurs) des objets dans le tableau a déjà été publié en dehors de du tableau. Essayez d'activer NSZombieEnabled pour voir si vous pouvez déterminer lequel.

+0

L'instrument Zombies dans Instruments peut aussi être très utile. –

+0

Y a-t-il un risque de fuite de mémoire en ne libérant pas les objets juste après les avoir ajoutés à l'onglet? – wallou

+0

@wailou: Il existe un risque de fuite de mémoire si vous ne respectez pas les consignes de gestion de la mémoire. Cela pourrait signifier que vous devriez les libérer juste après les avoir ajoutés au tableau, ce qui pourrait ne pas être le cas. Cela dépend si vous les possédez. – Chuck