[Objective-C] "nombre" mais not respond to '+premier'
6 réponses
panther751
Bonjour,
Tout d'abord je pr=E9cise que c'est la premi=E8re fois que je tente de
faire de l'objective-C, mais que je poss=E8de les bases de la POO
puisque mon principal langage est PHP5.
Je tente donc de construire une petite application qui pour un nombre
donn=E9 teste s'il est premier. Sur le fond aucun probl=E8me, mon
algorithme est fonctionnel ou du moins je suis assez grand pour le
d=E9buguer :p , mais le probl=E8me est que la tentative de codage que
j'ai fait en obj-C ne fonctionne pas.
Le compilateur me retourne le message d'erreur (pas fatale):
nptesteur.m:35: warning: `Testeur' may not respond to `+premier:'
.=2E. et effectivement =E0 l'utilisation ca ne fonctionne pas.
La ligne 35 est celle ci:
if ( [Testeur premier:nombrev] )
( Marqu=E9e par un // LIGNE 35 plus bas)
Je pense que mon erreur est toute b=EAte, et pourtant je ne la trouve
pas, mais peut =EAtre pourriez vous m'aider.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
luc
wrote:
Je pense que mon erreur est toute bête, et pourtant je ne la trouve pas, mais peut être pourriez vous m'aider.
Toute bête en effet: tu essayes d'envoyer les message 'premier:' à la *classe* Testeur alors que la methode est déclarée comme étant une méthode d'*instance*.
Pour que ton code fonctionne il faut soit changer les déclaration et définition de ta méthode 'premier:', soit instancier un objet Testeur:
1. changer la méthode en méthode de classe:
@interface Testeur : NSObject // Note bien le '+' à la place du '-' + (BOOL)premier:(int)nombrev; @end
Il faut quand même noter qu'utiliser une classe ou une instance dans ce cas là n'a *strictement* pas le moindre intérêt, une simple fonction C (eh oui, ne pas oublier que dans 'ObjC', y a 'C' :) ) suffit largement:
Je pense que mon erreur est toute bête, et pourtant je ne la trouve
pas, mais peut être pourriez vous m'aider.
Toute bête en effet: tu essayes d'envoyer les message 'premier:' à la
*classe* Testeur alors que la methode est déclarée comme étant une
méthode d'*instance*.
Pour que ton code fonctionne il faut soit changer les déclaration et
définition de ta méthode 'premier:', soit instancier un objet Testeur:
1. changer la méthode en méthode de classe:
@interface Testeur : NSObject
// Note bien le '+' à la place du '-'
+ (BOOL)premier:(int)nombrev;
@end
Il faut quand même noter qu'utiliser une classe ou une instance dans ce
cas là n'a *strictement* pas le moindre intérêt, une simple fonction C
(eh oui, ne pas oublier que dans 'ObjC', y a 'C' :) ) suffit largement:
Je pense que mon erreur est toute bête, et pourtant je ne la trouve pas, mais peut être pourriez vous m'aider.
Toute bête en effet: tu essayes d'envoyer les message 'premier:' à la *classe* Testeur alors que la methode est déclarée comme étant une méthode d'*instance*.
Pour que ton code fonctionne il faut soit changer les déclaration et définition de ta méthode 'premier:', soit instancier un objet Testeur:
1. changer la méthode en méthode de classe:
@interface Testeur : NSObject // Note bien le '+' à la place du '-' + (BOOL)premier:(int)nombrev; @end
Il faut quand même noter qu'utiliser une classe ou une instance dans ce cas là n'a *strictement* pas le moindre intérêt, une simple fonction C (eh oui, ne pas oublier que dans 'ObjC', y a 'C' :) ) suffit largement:
BOOL premier(int nombrev) { ........ }
-- Luc Heinrich
ftestuz
wrote:
Bonjour,
Tout d'abord je précise que c'est la première fois que je tente de faire de l'objective-C, mais que je possède les bases de la POO puisque mon principal langage est PHP5.
Je tente donc de construire une petite application qui pour un nombre donné teste s'il est premier. Sur le fond aucun problème, mon algorithme est fonctionnel ou du moins je suis assez grand pour le débuguer :p , mais le problème est que la tentative de codage que j'ai fait en obj-C ne fonctionne pas.
Le compilateur me retourne le message d'erreur (pas fatale): nptesteur.m:35: warning: `Testeur' may not respond to `+premier:' ... et effectivement à l'utilisation ca ne fonctionne pas.
D'après ce que je comprend, tu as voulu créer une classe pour tester si une variable de type int est premier ou pas. Dans ton programme tu envoies le message premier: à la *classe* Testeur, mais tu as défini ta méthode comme une méthode d'instance, note le - devant, et pas comme une méthode de classe. Change ton implémentation et ta définition par :
+ (BOOL)premier:(int)nombrev // Un + devant
Deux remarques : - Je ne connais pas vraiment php, mais note bien que les messages peuvent être envoyé aux instances d'une classe ou à la classe elle-même. La différence ce fait à la déclaration avec un + ou un - devant. En objective-c, la classe est elle-même un objet qui peut recevoir des messages et avoir des méthodes.
- Pour faire ce que tu proposes et pour être plus dans l'optique POO, je partirais plutôt vers une catégorie pour étendre les capacités de NSNumber.
Tout d'abord je précise que c'est la première fois que je tente de
faire de l'objective-C, mais que je possède les bases de la POO
puisque mon principal langage est PHP5.
Je tente donc de construire une petite application qui pour un nombre
donné teste s'il est premier. Sur le fond aucun problème, mon
algorithme est fonctionnel ou du moins je suis assez grand pour le
débuguer :p , mais le problème est que la tentative de codage que
j'ai fait en obj-C ne fonctionne pas.
Le compilateur me retourne le message d'erreur (pas fatale):
nptesteur.m:35: warning: `Testeur' may not respond to `+premier:'
... et effectivement à l'utilisation ca ne fonctionne pas.
D'après ce que je comprend, tu as voulu créer une classe pour tester si
une variable de type int est premier ou pas.
Dans ton programme tu envoies le message premier: à la *classe* Testeur,
mais tu as défini ta méthode comme une méthode d'instance, note le -
devant, et pas comme une méthode de classe.
Change ton implémentation et ta définition par :
+ (BOOL)premier:(int)nombrev // Un + devant
Deux remarques :
- Je ne connais pas vraiment php, mais note bien que les messages
peuvent être envoyé aux instances d'une classe ou à la classe elle-même.
La différence ce fait à la déclaration avec un + ou un - devant.
En objective-c, la classe est elle-même un objet qui peut recevoir des
messages et avoir des méthodes.
- Pour faire ce que tu proposes et pour être plus dans l'optique POO, je
partirais plutôt vers une catégorie pour étendre les capacités de
NSNumber.
Tout d'abord je précise que c'est la première fois que je tente de faire de l'objective-C, mais que je possède les bases de la POO puisque mon principal langage est PHP5.
Je tente donc de construire une petite application qui pour un nombre donné teste s'il est premier. Sur le fond aucun problème, mon algorithme est fonctionnel ou du moins je suis assez grand pour le débuguer :p , mais le problème est que la tentative de codage que j'ai fait en obj-C ne fonctionne pas.
Le compilateur me retourne le message d'erreur (pas fatale): nptesteur.m:35: warning: `Testeur' may not respond to `+premier:' ... et effectivement à l'utilisation ca ne fonctionne pas.
D'après ce que je comprend, tu as voulu créer une classe pour tester si une variable de type int est premier ou pas. Dans ton programme tu envoies le message premier: à la *classe* Testeur, mais tu as défini ta méthode comme une méthode d'instance, note le - devant, et pas comme une méthode de classe. Change ton implémentation et ta définition par :
+ (BOOL)premier:(int)nombrev // Un + devant
Deux remarques : - Je ne connais pas vraiment php, mais note bien que les messages peuvent être envoyé aux instances d'une classe ou à la classe elle-même. La différence ce fait à la déclaration avec un + ou un - devant. En objective-c, la classe est elle-même un objet qui peut recevoir des messages et avoir des méthodes.
- Pour faire ce que tu proposes et pour être plus dans l'optique POO, je partirais plutôt vers une catégorie pour étendre les capacités de NSNumber.
-- Frédéric Testuz <mailto:
panther751
Merci bien.
Au passage vous n'auriez pas une introduction en français sur ce langage? Les seules que j'ai trouvé étaient en anglais et mon niveau n'est pas suffisant pour les suivre.
Merci bien.
Au passage vous n'auriez pas une introduction en français sur ce
langage? Les seules que j'ai trouvé étaient en anglais et mon niveau
n'est pas suffisant pour les suivre.
Au passage vous n'auriez pas une introduction en français sur ce langage? Les seules que j'ai trouvé étaient en anglais et mon niveau n'est pas suffisant pour les suivre.
Bruno CAUSSE
dans l'article , à a écrit le 2/01/06 12:05 :
Au passage vous n'auriez pas une introduction en français sur ce langage? Les seules que j'ai trouvé étaient en anglais et mon niveau n'est pas suffisant pour les suivre.
http://www-igm.univ-mlv.fr/~dr/COURS/ObjectiveC/ObjectiveC.html -- Bruno
dans l'article 1136199901.854520.315200@f14g2000cwb.googlegroups.com,
panther751@gmail.com à panther751@gmail.com a écrit le 2/01/06 12:05 :
Au passage vous n'auriez pas une introduction en français sur ce
langage? Les seules que j'ai trouvé étaient en anglais et mon niveau
n'est pas suffisant pour les suivre.
http://www-igm.univ-mlv.fr/~dr/COURS/ObjectiveC/ObjectiveC.html
--
Bruno
Au passage vous n'auriez pas une introduction en français sur ce langage? Les seules que j'ai trouvé étaient en anglais et mon niveau n'est pas suffisant pour les suivre.
http://www-igm.univ-mlv.fr/~dr/COURS/ObjectiveC/ObjectiveC.html -- Bruno
panther751
Excusez moi je n'ai pas été assez précis.
Je voulais dire une introduction à Objective-C avec XCode, un peu plus évoluée que le Currency Converter de chez Apple Developer. Enfin déja je vais lire ça merci.
Excusez moi je n'ai pas été assez précis.
Je voulais dire une introduction à Objective-C avec XCode, un peu plus
évoluée que le Currency Converter de chez Apple Developer. Enfin
déja je vais lire ça merci.
Je voulais dire une introduction à Objective-C avec XCode, un peu plus évoluée que le Currency Converter de chez Apple Developer. Enfin déja je vais lire ça merci.
Bruno CAUSSE
dans l'article , à a écrit le 2/01/06 12:28 :
Je voulais dire une introduction à Objective-C avec XCode,
en francais, je connais seulement "cocoa par la pratique"