Problème avec un NSMutableArray

gibet_b

Membre expert
Club iGen
28 Mars 2005
1 905
119
45
Combrailles (France)
www.bournisien.info
Salut,

Je suis en train de découvrir le Cocoa et je fais une petite appli permettant de dessiner des traits dans un CustomView.

Dans mon PaintView.h (héritant de NSView), j'ai :
Bloc de code:
@interface PaintView : NSView
{
	NSPoint pointOrigine;
	NSPoint pointFinal;
	
	NSMutableArray *tabTraits;
}

Dans mon PaintView.m, j'initialise le tableau comme cela :
Bloc de code:
- (id)initWithFrame:(NSRect)frameRect
{
	if ((self = [super initWithFrame:frameRect]) != nil) {
		// Add initialization code here
		tabTraits = [[NSMutableArray alloc] init];
		NSLog(@"Initialisateur");
	}
	
	return self;
}

Puis j'ajoute des objets de type NSBezierPath (j'ai essayé d'ajouter d'autre type d'objet avec le même résultat) :
Bloc de code:
- (void)mouseUp:(NSEvent *)event
{
	NSPoint p = [event locationInWindow];
	NSBezierPath *dernierTrait;
		
	pointFinal= [self convertPoint:p fromView:nil];
	
	dernierTrait = [[NSBezierPath alloc] init];
	[dernierTrait setLineWidth:2.3];
	[dernierTrait moveToPoint:pointOrigine];
	[dernierTrait lineToPoint:pointFinal];
	[dernierTrait closePath];
	
	[tabTraits addObject:dernierTrait];
	
	[dernierTrait release];
	
	[self setNeedsDisplay:YES];
}

Quand j'exécute le programme, cela plante (affichage du debugger) au moment d'ajouter un objet au tableau.

Quelqu'un aurait une idée ?

Merci !
 
Je ne sais pas si tu as encore le problème, mais j'ai testé ton code dans un projet vie et cela ne plante pas.

Donc il est probable que cela vienne d'un autre morceau de code qui serait lié à celui là.

Peut-être dans la méthode drawRect ??
 
Merci LudoPac mais c'est bon, je n'ai plus le problème. En tout cas tu as vu juste, cela venait d'un autre endroit... En fait, l'erreur était assez énervante puisque cela venait d'un NSLog que j'avais mis pour débugguer mais que j'avais formulé comme cela :

Bloc de code:
NSLog("Nombre d'élément du tableau %@",[tabTraits count]);

alors que comme cela :

Bloc de code:
NSLog("Nombre d'élément du tableau %d",[tabTraits count]);

c'est mieux :D :D :D

Mais merci encore :up:
 
gibet_b a dit:
Merci LudoPac mais c'est bon, je n'ai plus le problème. En tout cas tu as vu juste, cela venait d'un autre endroit... En fait, l'erreur était assez énervante puisque cela venait d'un NSLog que j'avais mis pour débugguer mais que j'avais formulé comme cela :

Bloc de code:
NSLog("Nombre d'élément du tableau %@",[tabTraits count]);

alors que comme cela :

Bloc de code:
NSLog(@"Nombre d'élément du tableau %d",[tabTraits count]);

c'est mieux :D :D :D

Mais merci encore :up:

Ça c'est marrant parce que j'ai souvent eut le problème :D

Surtout quand on jongle entre les NSLog et le printf :) J'oublie de mettre le @ pour le NSLog ou je le met pour le printf :siffle: