Red de conocimiento informático - Problemas con los teléfonos móviles - ¿A qué debería prestar atención al crear clases dinámicamente en tiempo de ejecución?

¿A qué debería prestar atención al crear clases dinámicamente en tiempo de ejecución?

- (void)Crear clase

{

clase MiClase = objc _ asignar par de clases([ns clase de objeto], " mi clase ",

/// Agregue una variable NSString, el cuarto parámetro es el método y el quinto parámetro es el tipo de parámetro.

if (class_addIvar(MyClass, " itest ", sizeof(NSString *), 0, "@ "){

NSLog(@"Agregar ivar correctamente");

}

//myclasstest es una función implementada. Para conocer la ortografía de "v@:", consulte la concatenación de tipos de parámetros

class_addMethod(MyClass, @selector(). myclasstest:), (imp)myclasstest, " v @:);

//Esta clase se puede utilizar registrándola en el sistema de ejecución.

objc _ Register classpair(my class);

//El objeto instanciado se genera

id myobj =[[my class alloc]init];

NSString * str = @. asdb

//Asigne un valor a la variable que acaba de agregar.

//Object _ setinstance variable(myobj, " itest ", (void *) amp; str); permitido en Usado bajo arco

[myobj setValue: str forKey: @ "itest "]

// Llame al método myclasstest para enviar el mensaje myclasstest al destinatario myobj. /p>

[myobj myclasstest:10];

}

//Este método en realidad no se llama, pero debe implementarse; de ​​lo contrario, el siguiente método no se ejecutará llamado.

p>

- (void)myclasstest: (int)a

{

}

//Llamar a este método

Static void my class test (id self, sel _cmd, int a)//self y _cmd son obligatorios, se pueden agregar otros parámetros más adelante. p>ivar v. = class _ getinstance variable([self class], " itest ");

//Devuelve el valor de la variable denominada ivar de itest. = object_getIvar(self, v);

//Imprimir correctamente el resultado

NSLog(@" @", o

NSLog(@"); int a es d " , a);

}