C objectif de créer un objet de la classe
Je voudrais savoir comment faire pour créer un objet de la Class
en c objectif. Est-il une méthode, je suis absent dans l'exécution docs? Si oui, quel est-il? Je voudrais être capable de faire quelque chose comme ce qui suit:
NSDictionary *types;
-(id<AProtocol>) createInstance:(NSString *) name
{
if ((Class cls = [types objectForKey:name]) != nil)
{
return new Instance of cls;
}
else
{
[NSException raise:@"class not found" format:@"The specified class (%@) was not found.", name];
}
}
veuillez noter que le nom n'est pas un nom de la classe, mais une abréviation pour elle, et je ne peux pas faire ce qui est indiqué dans Créer un objet à partir de NSString de nom de la classe en Objective-C.
OriginalL'auteur Richard J. Ross III | 2010-09-07
Vous devez vous connecter pour publier un commentaire.
Un simple
[[cls alloc] init]
fera l'affaire.OriginalL'auteur cobbal
Comme cobbal a mentionné
[[cls alloc] init]
est la pratique habituelle. Lealloc
est une méthode de classe statique, défini dans NSObject, qui alloue de la mémoire et de l'init est l'instance constructeur. De nombreuses classes de fournir la commodité des constructeurs de faire cela en une seule étape pour vous. Un exemple est:Note le
*
aprèsNSString
. Vous travaillez essentiellement avec C ici, donc des pointeurs vers des objets!Aussi, n'oubliez pas de libérer la mémoire allouée à l'aide d'
alloc
avec un correspondant[instance release]
. Vous n'avez pas besoin de libérer de la mémoire, créé avec une commodité constructeur, car c'est autoreleased pour vous. Lorsque vous revenez à votre nouvelle instance de cls, vous devez l'ajouter à l'autorelease pool de sorte que vous n'avez pas de fuite de mémoire:Espère que cette aide.
OriginalL'auteur Greg Sexton