2010-09-16 4 views
0

Donc j'essaye d'implémenter une barre de recherche dans mon application et suis très proche mais ne peux pas sembler savoir où cette erreur de mémoire se produit. C'est quelle partie de ma méthode de recherche ressemble à:barre de recherche iPad mauvais accès à la mémoire?

filters = [[NSMutableArray alloc] init]; 
NSString *searchText = detailSearch.text; 
NSMutableArray *searchArray = [[NSMutableArray alloc] init]; 

// Normally holds the object (ex: 70 locations) 
searchArray = self.copyOfFilters ; 

//This is the line that is breaking after ~2-3 letters are entered in the search 
for (NSString *sTemp in searchArray) 
{ 
    NSRange titleResultsRange = [sTemp rangeOfString:searchText options:NSCaseInsensitiveSearch]; 

    if (titleResultsRange.length > 0) 
     [filters addObject:sTemp]; 
} 
displayedFilters = filters; 

copyOfFilters est une copie en profondeur des filtres affichés qui apparaissent lorsque la vue du premier chargement via:

self.copyOfFilters = [[NSMutableArray alloc] initWithArray:displayedFilters copyItems:YES];  

j'ai tracé par l'entrée de lettres et il est précis après 2 lettres, mais une fois que vous essayez et entrez une lettre après un espace dans la barre de recherche, il se bloque. La valeur de copyOfFilters = {(int) [nombre $ VAR]} objets. Est-ce que quelqu'un sait ce qui peut causer cela? Merci!

+0

avez-vous essayé "po searchArray" dans GDB à ce stade? Que produit-il – VdesmedT

+0

Je l'ai résolu, voir mon commentaire sur votre réponse. :) – gabaum10

Répondre

0
NSMutableArray *searchArray = [[NSMutableArray alloc] init]; 

// Normally holds the object (ex: 70 locations) 
searchArray = self.copyOfFilters ; 

est une fuite de mémoire vraiment basique. Vous créez un NSMuatbleArray et perdez toute chance de le libérer avec l'instruction suivante.

Assurez-vous de ne pas publier ou modifier copyOfFilters ou searchArray n'importe où dans votre code.

+0

Résolu: Modifié au-dessus du code à - NSMutableArray * searchArray = [[NSMutableArray alloc] initWithArray: copyOfFilters copyItems: OUI]; On dirait que j'ai encore besoin de travailler sur la gestion de la mémoire. :(Merci pour l'aide! – gabaum10

+0

Connaissez-vous des ressources simples que je pourrais aller à lire sur la gestion de mem? (Je n'ai pas encore un livre pour faire référence à ce genre de choses.) Merci – gabaum10

+0

http: // developer. apple.com/library/ios/#documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html (vous devrez vous connecter) – VdesmedT

0

avez-vous publié des filtres tout en appelant displayFilters?

+0

Nah c'était comment j'initialisait le tableau de recherche – gabaum10

0

Je me demandais si vous rencontrez un problème lorsque self.copyOfFilters est modifié. Essayez

searchArray = [self.copyOfFilters copy] ; 

Ne pas oublier de libérer searchArray après la boucle. Cela pourrait être un coup dans le noir, mais pourrait valoir une prise de vue?

+0

si la copie du filtre est libérée ou modifiée, cela ne fera aucune différence. – VdesmedT

Questions connexes