2009-11-29 5 views
0

Je souhaite créer un objet Class de la manière suivante: Classe c = [Classe classNamed: [NSString stringWithFormat: @ "% sview", [_shapeClass name]]];Problème de classe d'objectif C

Mon problème est ce message d'erreur: "erreur: expression attendue avant 'Class'". Que pensez-vous? Quel est le problème? Merci pour les réponses.

Éditer: Je veux faire cela dans un boîtier de commutateur.

Répondre

0

Il n'y a pas de classe nommée "Classe". "Class" est le type d'un pointeur vers un objet de classe. Quoi qu'il en soit, il existe une méthode classNamed: dans NSBundle, ce qui pourrait être ce que vous recherchez:

Class c = [[NSBundle mainBundle] classNamed:[NSString stringWithFormat:@"%sview", [_shapeClass name]]]; 

Si vous connaissez la classe est déjà chargé, vous pouvez également l'obtenir comme ceci:

Class c = NSClassFromString([NSString stringWithFormat:@"%sview", [_shapeClass name]]); 
+0

Lorsque une classe de '[NSBundle mainBundle]' ne sera-t-elle jamais chargée? – Chuck

2

Le problème est qu'il n'y a pas une telle classe que classe (et en note, cette classe inexistante ne répond pas non plus à classNamed:).

Il est pas tout à fait clair si vous voulez créer une classe ou d'obtenir une référence à une classe. Si ce dernier, vous voulez la fonction NSClassFromString(). Si vous voulez créer dynamiquement une classe au moment de l'exécution, vous devrez utiliser le Objective-C runtime functions pour créer une classe, l'enregistrer et ajouter des méthodes appropriées.

Questions connexes