Estoy tratando de construir algo para crear una instancia dinámica de un objeto de nombre de clase similar a cómo funciona el método Class.forName de Java, por ejemplo.
Class klass = Class.forName("MyClass");
Object obj = klass.instantiate(...
No vi ningún comportamiento semejante en Objective-C, así queMe gustaría llamar a un método para registrar la Clase cuando se carga una clase de Objective-C. Básicamente, me gustaría llamar a un método que registra mi clase, por ejemplo.
+ (void)mystatic {
[NSKeyedUnarchiver setClass:[self class] forClassName:"MyClass"]
}
¿Hay alguna manera de hacer esto en Objective-C en la plataforma OS X?
Gracias.
Respuestas
4 para la respuesta № 1Quieres usar NSClassFromString, como esto:
Class klass = NSClassFromString(@"MyClass");
id obj = [[klass alloc] init];
3 para la respuesta № 2
Primero, de hecho, existe un equivalente en Objective-C: como sugiere @Louis, use NSClassFromString ().
En segundo lugar, si desea un constructor estático como en Java, puede hacerlo también con el método + initialize. Ver esta pregunta SO relacionada.
0 para la respuesta № 3
También puede decir
Class myClass = [[NSBundle mainBundle] classNamed: @"MyClassName];
id myInstance = [[myClass alloc] init];
Con frecuencia, esto ayuda con los casos en los que el tiempo de ejecución aún no se ha producido en su clase.