2010-02-09 4 views
23

J'ai une chaîne qui est la valeur est le nom de la classe [MyClass] qui doit être instancié, et MyClass a une méthode appeléecomment instancier un objet de classe à partir d'une chaîne dans Objective-C?

-(void)FunctionInClass; 

J'utilise la méthode appelée NSClassFromString instancier MaClasse.i veulent savoir

1) what does NSClassFromString return?? 
2) what is id? 
3) How to call method -(void)FunctioninClass which is in MyClass using the instance. 

comment dois-je procéder, je le fais en Objective-C pour l'application iPhone?

Répondre

51

1) what does NSClassFromString return??

Il retourne une classe, ce qui signifie que vous pouvez faire [[NSClassFromString(@"MyClass") alloc] init]; voir Mac Dev Center Docs pour plus d'informations.

2) what is id?

Voir http://www.otierney.net/objective-c.html#idtype

3) How to call method -(void)FunctioninClass which is in MyClass using the instance.

id myclass = [[NSClassFromString(@"MyClass") alloc] init]; 
[myclass FunctioninClass]; 
+0

AFAICT, NSClassFromString est une fonction, pas une classe. Le point 1 deviendrait NSClassFromString (@ "MyClass") –

+0

Bon point. J'allais de mémoire. Toujours l'idée générale est là ... – echo

+0

@ point 1) si NSClassFromString retourne une classe, alors cette classe doit être instanciée n alors on peut appeler la méthode FunctioninClass à droite? mais @ point 3) nous utilisons directement la classe appelée myclass et la fonction d'appel. J'ai essayé avec le point 3) son me donnant une erreur: MyClass non déclarée (première utilisation dans la fonction) et myclass undeclare (première utilisation dans la fonction) – suse

Questions connexes