Comment faire pour vider correctement un NSMutableArray
Je suis en train de vider un NSMutableArray avec le [montableau removeallobjects]; mais j'obtiens l'erreur exc_bad_access. Est-ce le bon moyen de vider le tableau? J'ai essayé de le mettre à néant, mais sa ne fonctionne pas non plus.
En fait ce que je suis en train de faire est de remplir le tableau avec les données et l'utilisateur a la possibilité de "rafraîchir" les données et je veux vider le tableau avant de saisir les données actualisées.
Je ne peux pas poster tout le code car c'est trop grand.
Pouvez-vous ajouter de la partie où vous ajoutez les objets de la matrice?
[checkinArray addObject:checkinsA]; [checkinsA.taggedID release]; [checkinsA.taggedName release]; [checkinsA release]; où checkinsA est un objet personnalisé. Aussi cette commande est dans la boucle.
[checkinArray addObject:checkinsA]; [checkinsA.taggedID release]; [checkinsA.taggedName release]; [checkinsA release]; où checkinsA est un objet personnalisé. Aussi cette commande est dans la boucle.
OriginalL'auteur BlackM | 2011-06-19
Vous devez vous connecter pour publier un commentaire.
-[NSMutableArray removeAllObjects]
est la bonne façon de vider unNSMutableArray
. Vous êtes plus susceptibles d'obtenir un impact, parce que vous êtes toujours en utilisant les objets que vous avez supprimé quelque part, dans votre INTERFACE utilisateur peut-être.OriginalL'auteur puzzle
Je pense que le problème est dans cet extrait de code que vous avez fournies dans les commentaires,
taggedID
ettaggedName
sont des propriétés de lacheckinsA
objet. Elles doivent être publiées dans ledealloc
méthode uniquement. Le tableau n'est pas de conserver l'arborescence de l'objet. Il conserve l'objet racine. Donc il ne devrait pas être une version ici. Donc assommer les deux lignes dans le milieu et d'en fairepour(NSDictionary *l'utilisateur dans utilisateurs) { Checkin *checkinsA = [[Checkin alloc] init]; checkinsA.taggedName =[[NSMutableArray alloc] init]; checkinsA.taggedID =[[NSMutableArray alloc] init]; ...... [checkinArray addObject:checkinsA]; [checkinsA.taggedID release]; [checkinsA.taggedName release]; [checkinsA release];
OriginalL'auteur Deepak Danduprolu
Vous êtes d'avoir un impact, parce que votre tableau n'existe plus dans la mémoire.
Je parie que c'est parce que vous avez oublié de le conserver (ou sorti trop tôt)
Vous avez probablement créé à l'aide de
[NSMutableArray array]
ouarrayWithObjects:
ou certaines de ces variantes, ou appeléautorelease
après votrealloc
+init
, tandis que si elle est une variable d'instance, vous devez le conserver jusqu'à ce que l'objet est dealloc.Noter que la mémoire de mgmt est un élément clé du développement d'iOS. Assurez-vous de connaître parfaitement (comme il devient naturel et vous n'hésitez pas lors de à retenir et à quand la libération) avant d'aller plus loin, il va vous éviter beaucoup d'ennuis comme cela, une fois que vous l'utilisez à droite.
OriginalL'auteur AliSoftware