/ / Inicializador estático en Objective-C con carga de clase - object-c, static-constructor

Inicializador estático en Objective-C sobre la carga de clase - object-c, static-constructor

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 № 1

Quieres 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.