plantage a cause d'un [[NSApplication sharedApplication] setDelegate:self];
Bonjour,
J'ai suivit le petit tutoriel du site du zéro -> http://www.siteduzero.com/tutoriel-3-176940-un-carnet-de-commandes.html. Mon application fonctionnait jusqu'a ce que j'arrive à la partie "Des petits ajouts qui font tout le charme !" ou l'on sauve le contenu de la NSTableView dans un fichier.
J'ai je pense suivit exactement ce tutoriel et mon appli ce plante

Voici le code de mon ControlerCommande.h
Voici le code de mon ControlerCommande.m
J'ai suivit le petit tutoriel du site du zéro -> http://www.siteduzero.com/tutoriel-3-176940-un-carnet-de-commandes.html. Mon application fonctionnait jusqu'a ce que j'arrive à la partie "Des petits ajouts qui font tout le charme !" ou l'on sauve le contenu de la NSTableView dans un fichier.
J'ai je pense suivit exactement ce tutoriel et mon appli ce plante

Voici le code de mon ControlerCommande.h
<br />[#import <Cocoa/Cocoa.h><br /><br />@interface ControlerCommande : NSObject {<br /> IBOutlet id boutonSupprimer;<br /> IBOutlet id table;<br /> NSMutableArray * commandes;<br />}<br />- (IBAction)ajouter:(id)sender;<br />- (IBAction)supprimer:(id)sender;<br /><br />- (int) numberOfRowsInTableView:(NSTableView *)uneTable;<br />- (id) tableView:(NSTableView *)uneTable objectValueForTableColumn:(NSTableColumn *)uneColonne row:(int)i ;<br />- (void) tableView:(NSTableView *)uneTable setObjectValue:(id)objet forTableColumn:(NSTableColumn *)uneColonne row:(int)i ;<br /><br />- (void) miseAJour;<br />@end<br />
Voici le code de mon ControlerCommande.m
<br /><br />#import "ControlerCommande.h"<br /><br />@implementation ControlerCommande<br /><br /><br />-(id) init {<br /> <br /> [super init];<br /> NSString * chemin = [@"~/commandes sauvegardées" stringByExpandingTildeInPath];<br /> NSArray *contenu = [NSArray arrayWithContentsOfFile:chemin];<br /> <br /> commandes = [[NSMutableArray alloc] init];<br /> <br /> if (!contenu)<br /> commandes = [commandes init];<br /> else <br /> commandes = [commandes initWithArray:contenu];<br /> <br /> [[NSApplication sharedApplication] setDelegate:self];<br /> <br /><br /> <br /> return self;<br />}<br /><br />- (void) applicationWillTerminate:(NSNotification *)notification <br />{<br /> NSString * chemin = [@"~/commandes sauvegardées" stringByExpandingTildeInPath];<br /> [commandes writeToFile:chemin atomically:YES];<br />}<br /><br />- (IBAction)ajouter:(id)sender {<br /> <br /> NSMutableDictionary * commande = [NSMutableDictionary dictionary];<br /> [commandes addObject:commande];<br /> [self miseAJour];<br /> <br />}<br /><br />- (IBAction)supprimer:(id)sender {<br /> <br /> int ligne = [table selectedRow];<br /> [commandes removeObjectAtIndex:ligne];<br /> [self miseAJour];<br /> <br />}<br /><br />-(void) miseAJour<br />{<br /> [table reloadData];<br />}<br /><br />- (int) numberOfRowsInTableView:(NSTableView *)uneTable<br />{<br /> return [commandes count];<br />}<br /><br />- (id) tableView:(NSTableView *)uneTable<br />objectValueForTableColumn:(NSTableColumn *)uneColonne<br /> row:(int)i<br />{<br /> NSString *identifier = [uneColonne identifier];<br /> return [[commandes objectAtIndex:i] objectForKey:identifier];<br />}<br /><br />- (void) tableView:(NSTableView *)uneTable setObjectValue:(id)objet forTableColumn:(NSTableColumn *)uneColonne row:(int)i ;<br />{<br /> NSString *identifier = [uneColonne identifier];<br /> NSMutableDictionary * commande = [commandes objectAtIndex:i];<br /> <br /> [commande setObject:objet forKey:identifier];<br />}<br />@end<br />
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Ceci étant il n'est pas habituel de faire alloc sans suivre par init c'est même déconseillé dans la documentation.
il faut lire les traces, et tout devient clair.
une exception est levée par initWithCapacity qui est appelée par un objet concret. eh oui il a deja été crée.
laudema a donnée la solution.