2009-07-29 3 views
0

Voici le code: http://pastie.org/562956Objectif C - accidents de code sur la sélection dans le contrôleur de navigation

ce code se bloque sur l'appel à itemsArray.count sur « didSelectRowAtIndexPath ». Je ne comprends pas pourquoi ... itemsArray est accédé pour d'autres méthodes comme "numberOfRowsInSection". pourquoi tout d'un coup, on se déréférencera (je présume que c'est ce qui se passe).

ici est la sortie (ne sais pas ce qui se passe avec « incapable de lire la commande de charge inconnue 0x22 » non plus)

[session a commencé à 2009-07-28 22:11:50 -0600.] Avertissement - Non emplacement trouvé pour "NSUserDefaults-Optimize.m: 81" GNU gdb 6.3.50-20050815 (version Apple gdb-966) (mar 10 mars 02:43:13 UTC 2009) Copyright 2004 Free Software Foundation, Inc. GDB est un logiciel gratuit, couvert par la GNU General Public License, et vous êtes le bienvenue pour le changer et/ou distribuer des copies de celui-ci sous certaines conditions. Tapez "show copy" pour voir les conditions. Il n'y a absolument aucune garantie pour GDB. Tapez "show warranty" pour plus de détails. Cette GDB a été configuré comme « i386-apple-darwin » .sharedlibrary apply-charge Toutes les règles Fixation pour traiter 56173. incapable de lire la commande de charge inconnue 0x22 incapable de lire la commande de charge inconnue 0x22 incapable de lire la commande de charge inconnue 0x22 incapable de lire la commande de charge inconnue 0x22 incapable de lire la commande de charge inconnue 0x22 incapable de lire la commande de charge inconnue 0x22 incapable de lire la commande de charge inconnue 0x22 incapable de lire la commande de charge inconnue 0x22 incapable de lire la commande de charge inconnue 0x22 impossible de lire la commande de chargement inconnue 0x22 impossible de lire la commande de chargement inconnu 0x22 incapable de lire la commande de charge inconnue 0x22 incapable de lire la commande de charge inconnue 0x22 incapable de lire la commande de charge inconnue 0x22 incapable de lire la commande de charge inconnue 0x22 incapable de lire la commande de charge inconnue 0x22 incapable de lire la commande de charge inconnue 0x22 pas pour lire la commande de chargement inconnue 0x22 impossible de lire la commande de chargement inconnu 0x22 2009-07-28 22: 11: 55.545 Send2iPhone [56173: 20b] Charger les articles 2009-07-28 22: 11: 55.629 Send2iPhone [56173: 20b] cellforrow 0 2009-07-28 22: 11: 55.634 Send2iPhone [56173: 20b] valeur = (nul) 2009-07-28 22: 11: 55.644 Send2iPhone [56173: 20b] cellforrow 1 2009-07-28 22 : 11: 55.645 Send2iPhone [56173 : 20b] valeur = (nul) 2009-07-28 22: 11: 55.654 Send2iPhone [56173: 20b] celluleforrow 2 2009-07-28 22: 11: 55.658 Send2iPhone [56173: 20b] valeur = (nul) 2009-07-28 22: 11: 55.659 Send2iPhone [56173: 20b] cellforrow 3 2009-07-28 22: 11: 55.663 Send2iPhone [56173: 20b] valeur = (nul) 2009-07-28 22:11: 57.724 Send2iPhone [56173: 20b] row = 0 Signal de réception du programme: "EXC_BAD_ACCESS". tuer quit

Le Debugger a quitté avec le statut 0. (gdb)

Répondre

2

Chuck a raison, vous ne retenez pas le tableau.

Une solution est de faire tabEléments une propriété du contrôleur ainsi dans l'en-tête

@interface RootViewController : UITableViewController { 
    NSArray *itemsArray; 
    NSString *test; 

} 

//add the property directive for itemsArray and tell it to use retain 
@property (nonatomic, retain) NSArray *itemsArray; 

et dans le .m

@implementation RootViewController 
// add the synthesize for itemsArray property 
@synthesize itemsArray; 


// when you set the value of itemsArray use self.itemsArray this will properly retain the array 
self.itemsArray = [NSArray arrayWithContentsOfURL:plistURL]; 


// release the itemsArray in dealloc 
- (void)dealloc { 
    [itemsArray release]; 
    [super dealloc]; 
} 
2

Vous ne réclamez pas la propriété de tabEléments, il est donc d'être libéré par la piscine autorelease à un moment donné. Vous pouvez le résoudre en définissant la variable à l'aide d'un accesseur qui conserve et libère correctement. Aussi, si vous n'avez pas, vous devriez lire le Cocoa memory management guidelines.

Questions connexes