Si está trabajando con Objective-C sin el (, iOS
, etc GNUstep
OS X
) Sistema NeXTstep
o simplemente piensa que este método es más limpio, entonces se podría utilizar el Objective-C language runtime library's API. Bajo Objective-C 2.0
:
#import <objc/runtime.h>
//Declaration in the above named file
id objc_getClass(const char* name);
//Usage
id c = objc_getClass("Object");
[ [ c alloc ] free ];
Bajo el Objective-C (1.0 o versión sin nombre) que utilizaría el siguiente:
#import <objc/objc-api.h>
//Declaration within the above named file
Class objc_get_class(const char* name);
//Usage
Class cls = objc_get_class("Test");
id obj = class_create_instance(cls);
[ obj free ];
no he probado la versión 1.0
, sin embargo, he utilizado la función 2.0
en el código que ahora está en producción. Personalmente creo que la utilización de la función 2.0
es más limpia si está disponible que la función NS ya que consume menos espacio: the length of the name in bytes + 1 (null terminator)
para la API 2.0 frente a the sum of two pointers (isa, cstring)
, una size_t length (cstring_length)
y la length of the string in bytes + 1
para la API NeXTSTEP
.
Esto no hará que cualquier fuga? – AntiMoron