美文网首页
objc_getClass()、object_getClass(

objc_getClass()、object_getClass(

作者: irisg80236 | 来源:发表于2019-03-07 13:18 被阅读0次
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    // 根据字符串返回类对象
    // Class _Nullable objc_getClass(const char * _Nonnull name)
    Class class1 = objc_getClass("ViewController");
    // 返回对象的isa指针
    // Class _Nullable object_getClass(id _Nullable obj)
    /*
     eg:参数为实例对象返回类对象
     eg:参数为类对象返回元类对象
     eg:参数为元类对象返回根元类对象
     eg:参数为根元类对象返回自身
     */
    // 返回类对象
    Class class2 = object_getClass(self);
    // 返回元类对象
    Class class21 = object_getClass(class2);
    // 返回根元类对象
    Class class22 = object_getClass(class21);
    // 返回根元类对象自身
    Class class23 = object_getClass(class22);
    // 总是返回类对象
    Class class3 = [self class];
    // 总是返回元类对象 Class _Nullable objc_getMetaClass(const char * _Nonnull name)
    Class class4 = objc_getMetaClass("ViewController");
    // 返回自身
    Class class5 = [class3 class];

}
测试demo.png
输出结果.png

[id class]的内部实现

+ (Class)class {
return self;
}

- (Class)class {
return object_getClass(self);
}

相关文章

网友评论

      本文标题:objc_getClass()、object_getClass(

      本文链接:https://www.haomeiwen.com/subject/daxcpqtx.html