Débutant Cocoa

artnow44

Membre confirmé
18 Août 2009
20
0
Bonjour,

J'ai décidé de me mettre sérieusement au Cocoa après être passé par quelques languages.

Je me suis acheté un bouquin plutôt bien foutu mais qui n'empêche pas de passer à coté de certaines choses :

Bloc de code:
#import <Cocoa/Cocoa.h>


@interface AppController : NSObject {
	int fido;
}

@property(readwrite, assign) int fido;

@end

Bloc de code:
@implementation AppController

@synthesize fido;

- (id)init
{
	[self init];
	fido = 2;
	NSLog(@"fido = %d", fido);
	return self;
}
@end

Cette classe est utilisée dans interface builder. A l'exécution du programme, il plante. Si quelqu'un peut m'éclairer avec quelques explications ce serait super.

Je me rends compte que jusqu'à maintenant je n'utilisais que des objets et non des in ou autres. Même en utilisant -setFido: le programme plante.

Merci.
 

ntx

Membre vénérable
Club MacG
15 Octobre 2004
12 128
376
92
Bloc de code:
@implementation AppController

@synthesize fido;

- (id)init
{
	[self init];
	fido = 2;
	NSLog(@"fido = %d", fido);
	return self;
}
@end
Change de livre, ton constructeur est complètement foireux :D:D:D Il faut faire un alloc avant d'essayer d'initialiser ton objet :zen:

Bloc de code:
- (id)init 
{
  self = [super init];
  
  if (self != nil) 
  {
     /* ton code ... */
	fido = 2;
	NSLog(@"fido = %d", fido);
  }
  
  return self;
}
 

artnow44

Membre confirmé
18 Août 2009
20
0
Oula je viens de voir que j'ai fait n'importe quoi. "self" à la place de "super". Sinon dans mon bouquin ils ont expliqué une fois pour la vérification != nil mais ils ne la font jamais : ils mettent juste [super init]; (je dis pas qu'ils ont raison)
Je la rajouterai. Merci ^^'