-(Void) createClass {Class MyClass = objc_allocateClassPair ([NSObject class], "myclass", 0); // Add an NSString variable. The fourth parameter is the method of adding an NSString, the fifth parameter is the parameter type if (class_addIvar (MyClass, "itest", sizeof (NSString *), 0 ,"@")) {NSLog (@ "add ivar success");} // myclasstest is an implemented function. For details about this method, see class_addMethod (MyClass, @ selector (myclasstest :), (IMP) myclasstest, "v @:"); // register this class to the runtime system and use objc_registerClassPair (MyClass ); // generate an instantiated Object id myobj = [[MyClass alloc] init]; NSString * str = @ "asdb "; // assign a value to the variable you just added // object_setInstanceVariable (myobj, "itest", (void *) & str); [myobj setValue: str forKey: @ "itest"]; // call the myclasstest method, that is, send the message myclasstest to the receiver of myobj [myobj myclasstest: 10];} // This method is not actually called, but it must be implemented. Otherwise, the following method-(void) myclasstest :( int) a {}// call the static void myclasstest (id self, SEL _ cmd, int a) // self and _ cmd are required. You can add other parameters {Ivar v = class_getInstanceVariable ([self class], "itest") at will "); // return the id o = object_getIvar (self, v) of the ivar variable named itest. // The NSLog (@ "% @", o) is successfully printed ); NSLog (@ "int a is % d", );}