J'ai une situation où parfois ma méthode -tableView: numberOfRowsInSection:
demande le compte d'un NSArray désalloué. J'aimerais pouvoir tester si ce tableau est désalloué d'une manière sûre et ne fait pas appel à un zombie.Test si un objet a été désalloué
Mon code ressemble actuellement:
-(NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section
{
if (! self.offers){
return 0;
}
return [self.offers count];
}
Je viens débogueur franchissait ce qu'il a observé et passer le test ! self.offers
puis écraser brutalement sur [self.offers count]
. Je NSZombies sous tension, et à cette ligne je reçois le message NSLog:
-[__NSArrayM count]: message sent to deallocated instance 0x283dc0
Alors quel que soit self.offers est, à ce stade, n'est pas nul, mais aussi à ne pas être pointés quoi que ce soit valide. Comment puis-je tester pour cela?
EDIT: Merci pour le dur-amour, amis. J'ai compris pourquoi j'ai eu des problèmes avec ma gestion de la mémoire - c'est en fait une question de relations de délégués qui traînent plus longtemps qu'elles ne sont utiles. Voir ici pour la réponse complète à mon problème: Managing calls to objects that get deallocated when the view is backed out of
double possible de [Comment déterminer si j'ai un pointeur vers l'objet libéré?] (Http://stackoverflow.com/questions/12280799/how-to-determine- if-i-have-a-pointer-to-released-object) – OrangeDog