appeler une methode d'instance depuis une methode de classe

Genose

Membre enregistré
27 Septembre 2004
3
0
44
bonjour , ne connaissant pas trop le Obj-c, je m'adresse a vous qui etes bien plus d'experience,

je cherche comment on peut appeler une methode d'instance depuis une methode de classe/.


j'ai tester
Bloc de code:
 @implementation maclasse
 
 +(id) methodeclassA{
 
 
 ret = [maclasse getinstance];
 
 }
 
 -(int) getinstance{
 
 
 
 
 return OK;
 
 
 }
 
 
 
 
 @end




mais sans succes car il cherche un +[maclasse getinstance];

et ou OK est une variable d'instance. (int ok = 4);

exilste t'il un moyen de faire cette apple




merci de lumiere.

Genose
 
Ca n'a absolument aucun sens ! :affraid:
Ce que tu veux faire est impossible !

J'ai pas le temps de te donner une explication, mais reprends les concepts de bases de la programmation orientée objet car visiblement ils ne sont pas acquis. ;) :zen:
 
Oui, comme le dit molgow, ce que tu veux faire est impossible ;)

Tu ne peux pas à partir d'une méthode de classe (static) accéder à des méthodes ou des variables d'instance, c'est un principe général de la programmation objet et effectivement un non sens :D

dans ton exemple:

[maclasse getinstance];

à quelle instance veux-tu faire référence ??

L'inverse est bien sûr possible;

Bloc de code:
@implementation Maclasse
 
 +(int) methodeDeClasse{
 
 
 return 1;
 
 }
 
 -(int) appelMethodeDeClasse{
 
 
 return [self methodeDeClasse];

// ou [MaClasse methodeDeClasse];

 
 
 }
 
Je dirais même plus : si tu essayes cela en C++, ca doit planter à la compile :) Objective-C est plus permissif et ca doit planter uniquement à l'execution, non ?
 
j'ai pratiquer du c++ et j'ai songer au friend et au public, mais j'ai des difficulté a integrer le concept de cocoa sur cette maniere de proceder, car en c++ je suis un peu loin de mes heures de pratique mais je pense que j'aurais ecrit


class maclass
{
public:

int mavariable = 0;
int fonction_public_retournant_un_truc(void)
{

if() ...



}

int fonctionappeler_public_retournant_un_truc(void)
{

return self->fonction_private_retournant_un_truc();



}

private:

int mavariableb = 0;
int fonction_private_retournant_un_truc(void){


;

return( mavariableb+self->fonction_public_retournant_un_truc());
}

}
int main(void){



ret = maclasse->fonctionappeler_public_retournant_un_truc();

cout << ret;
return 0;
}




ca maurais donner un resultat


voila en fait le pourquoi de la chose, je cherche a retourner une valeur d'une instance de variable mais comme les methode de classe ne peuvent pas y acceder je cherche une maniere d'y parvenir.


j'en regrette presque le C++, quelqun'un comprend t'il mon dileme.
 
Sinon il y a quelque chose dans le genre :

@implementation Maclasse

+(id) methodeclassA: (MaClass*) maClass
{
ret = [maclasse getinstance];
}

-(int) getinstance
{
return OK;
}

@end