Runtime动态创建类

turboksiOS257

- (void)viewDidLoad {

    [super viewDidLoad];

    Class KSObj = objc_allocateClassPair([NSObject class], "KSStudent", 0);

    class_addIvar(KSObj, "name", sizeof(NSString *), log2(sizeof(NSString *)), @encode(NSString *));

    SEL sel = sel_registerName("other:");

    Method method = class_getInstanceMethod([ViewController class], @selector(other:));

    class_addMethod(KSObj, sel, method_getImplementation(method), method_getTypeEncoding(method));

    objc_registerClassPair(KSObj);

    //开始使用

    id kkk = [KSObj new];

    //给name赋值

    [kkk setValue:@"jack"forKey:@"name"];

    //获取name

    Ivar iv = class_getInstanceVariable(KSObj, "name");

    NSString* name =object_getIvar(kkk, iv);

    NSLog(@"%@",name);

    [kkk other:name];

}

-(void)other:(NSString*)name{

    NSLog(@"%s ---- %@",__func__,name);

}



返回列表

上一篇:RunLoop

下一篇:iOS的block

相关文章

iOS音视频之视频播放

iOS音视频之视频播放

由于MPMoviePlayerController与MPMoviePlayerViewController在iOS9.0之后被弃用,所以采用AVPlayer以及AVPlayerViewControll...

iOS基于SceneKit的3D汽车改色

iOS基于SceneKit的3D汽车改色

基于SceneKit的汽车改色,需要修改模型文件可以去 https://www.turbosquid.com/ 自行下载,免费资源还挺多的。先上个效果图吧:核心代码: &...

iOS图片圆角设置

iOS图片圆角设置

    UIImageView * vv = [[UIImageView alloc] initWithFrame:CGRectMake(50, 500, 250, 25...

RunLoop

RunLoop

RunLoop一、基础理论顾名思义1.    运行循环2.    在程序运行过程中循环做一些事情3.    是用户态和内核态之间的交互模式应...

iOS多线程

iOS多线程

多线程常见方案一、GCD的函数:GCD中有2个用来执行任务的函数queue:队列block:任务1.    用同步的方式执行任务dispatch_sync(di...

OC的实例对象、类对象、元类对象的关系

OC的实例对象、类对象、元类对象的关系

Objective-C中的对象、简称OC对象,主要分为三种:instance对象(实例对象)、class对象(类对象)、meta-class对象(元类对象)。一:instance对象instance对...