2010-02-04 5 views
0

Je crée une UIActionSheet avec des textes de bouton à partir d'un fichier txts. Après avoir mis NSZombieEnabled, NSDebuEnabled OUI et NON à NSDeallocateZombies, je reçois un point d'arrêt avec le message:NSLocalizedStringFromTable crash

*** - [CFString isEqual:]: message envoyé à l'instance désallouées 0x11fae00

Cette se produit après avoir montré pour la troisième ou quatrième fois le UIActionSheet, pas immédiatement. Le code était cela se produit est:

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:NSLocalizedStringFromTable(@"text", @"class", @"text") 
                 delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil 
                 otherButtonTitles:NSLocalizedStringFromTable(@"text1", @"class", @"text1"), 
                  NSLocalizedStringFromTable(@"text2", @"class", @"text2"), 
                  NSLocalizedStringFromTable(@"text3", @"class", @"text3"), nil]; 
[actionSheet showFromTabBar:self.tabBarController.tabBar]; 
[actionSheet release]; 

Si je retire NSDealocateZombies, il n'y a pas plus d'accidents dans le simulateur, mais je reçois des avertissements dans la console:

[CFString _cfTypeID]: message envoyé à instance désallouée

Avez-vous rencontré de tels problèmes? Est-ce mal d'avoir à plusieurs reprises les ficelles de la ressource? Comme une dernière solution, je pensais les mettre dans les variables membres une fois, évitant ainsi un autre calll à NSLocalizedStringFromTable pour le même texte.

Répondre

0

a finalement trouvé le problème ailleurs: un NSString obtenu par NSLocalizedStringFromTable a été libéré plus tard bien qu'il n'y ait pas fait conserver sur elle. La partie amusante est que l'accident se produisait dans le cadre du système dans une classe complètement différente. Il semble donc que la sur-libération était la cause après tout.