[Objective-C] parse error before 'int'

kef_hin

Membre confirmé
27 Mars 2008
29
0
Bonjour, je viens vous demander votre avis sur un problème rencontré sur un programme extrêmement simple en Objective-C et qui me rend fou. Je suis désespéré...

J'ai un main et une classe... Quinze lignes de codes tout au plus, mais il n'y a pas moyen de compiler...

main.m
Bloc de code:
#import <Cocoa/Cocoa.h>
#import "SquareLab.h"

int main(int argc, char *argv[])
{
    return NSApplicationMain(argc,  (const char **) argv);
}

SquareLab.m
Bloc de code:
#import "SquareLab.h"

@implementation SquareLab

- (id) initWidth: int width Height: int height
{
	[super init];
	self.width = width;
	self.height = height;
}

@end

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


@interface SquareLab : NSObject
{
	
	int width;
	int height;

}

@end

Or quand j'essaye de compiler, je reçois cette erreur :

image3zr.png


Je ne comprends vraiment pas d'où ça vient. Merci d'avance à ceux qui pourront m'aider :zen:

Je précise aussi que je suis complètement débutant en Objective-C, donc je m'excuse d'avance si je vous ennuie pour quelque chose de vraiment stupide.
 
Je sais bien que je n'y connais rien. J'ai commencé à apprendre aujourd'hui :D (Pas avec les mêmes livres, mais tout de même, je ne me suis pas lancé dans cette histoire sans aucune référence)

Le problème, c'est que je suis bloqué sur ce problème depuis des heures sans comprendre. Alors si tu pouvais pointer l'erreur, peut-être que cela m'aiderait à comprendre un peu mieux la syntaxe de l'Objective-C :)
 
Tu as mal renseigne les termes dans l'initialisation. Par exemple:
Bloc de code:
[[ChaiseElectrique alloc] initWithNioub:@"kef_hin" remarque:@"Il faut aussi lire la page 1"];
:D;)
 
Tu as mal renseigne les termes dans l'initialisation. Par exemple:
Bloc de code:
[[ChaiseElectrique alloc] initWithNioub:@"kef_hin" remarque:@"Il faut aussi lire la page 1"];
:D;)
C'est un peu vache... :D

Si tu essaies de supprimer l'espace entre "width" et "Height", çà ne va pas un peu mieux ? parce que là le nom de variable en deux mots, çà ne le fait pas trop !!!
 
Mais non ce n'est pas vache. C'est de l'humour et ça montre un exemple de code.

Tu mérites aussi la chaise :love::p car tu n'as pas vu que son erreur consiste a écrire initWidth a la place de initWithWidth et qu'il n'a pas mis ses int entre parenthèses.

Sans doute un problème de soupe a cause de la non-connaissance de l'anglais.

Bloc de code:
-(id)initWithWidth:(int)width Height:(int)height
{
 
Dernière édition:
Hep,

Alors, j'avais fini par trouver l'erreur des parenthèses (en fait, il y avait une erreur dans le cours : http://www.tutomobile.fr/les-bases-de-lobjective-c-tutoriel-iphone-n°2/29/07/2010/)

Par contre, il semble bien qu'il y ait une convention pour écrire "initWith...", mais ce n'est pas du tout obligatoire. Dans ce cas-ci, cela partait d'un choix personnel. Je trouvais que c'était bien plus équilibré, épuré et lisible de cette manière. J'en ai même vu qui écrivait des horreurs (en tout cas, pour moi) du type : initWithWidth: (int)width andHeight: (int)height

En revanche, toujours pas moyen d'utiliser @property et @synthesize :(
 
id -> void *

ALLOCMEMADDR struct CONSTRUCTOR(arg)
{
//ALLOC CONTAINER

return ALLOCMEMADDR;
}

APPREND LE C avant de te lancer dans obj-c

Bloc de code:
enum {
	ARRAY_ERRNO,
	ARRAY_NEW,
	ARRAY_ONITEM
};

typedef struct {
	uint32_t index;
	uint32_t hash;
	const void * value;
	uint32_t type;
} array_item_t;

typedef struct {
	int32_t status;
	int32_t count;
	array_item_t * items;
} array_t;

array_t * array_new(void) 
{
	array_t * arr;
	if (NULL == (arr = (array_t *)malloc(sizeof(array_t) + 1))) {
		errno = ENOMEM;
		return NULL;
	}
	if (NULL == (arr->items = (array_item_t *)malloc(sizeof(array_item_t) + 1))) {
		errno = ENOMEM;
		return NULL;
	}
	arr->status = ARRAY_NEW;
	arr->count = 0;
	return arr;
}
 
Dernière édition: