Runtime-dynamically create a class to add attributes and Methods

Source: Internet
Author: User

-(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", );}

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.