Runtime动态创建类

turboksiOS167

- (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

相关文章

dealloc

dealloc

当调用dealloc方法的时候,执行顺序可以在源码中查找如下(objc源码):1.// Replaced by NSZombies- (void)dealloc {    _obj...

iOS音视频之视频播放

iOS音视频之视频播放

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

多线程举例

多线程举例

举例一:- (void)viewDidLoad {    [super viewDidLoad];    dispatch_queue_t queue = di...

iOS 之导航渐变,并且跳转返回保持滑动状态

iOS 之导航渐变,并且跳转返回保持滑动状态

导航刚开始进入为透明,根据我们的滑动确定要显示的背景色。先看一下效果图:一:创建demo,将3个界面添加到控制器中,此过程比较简单代码就不上了。二:在第一页的viewDidload中将当前页面的导航设...

OC对象的本质

OC对象的本质

我们平时编写的oc代码、底层实现其实是C\C++代码OC代码    ——>    C\C++    ——>  &nbs...

iOS 仿抖音打卡美好中国

iOS 仿抖音打卡美好中国

效果图这几天打卡中国挺火的,刚好有点时间就想着看看能不能模仿一下。Scrollview + CADisplayLink 设置背景UILongPressGestureRecognizer长按手...