objc_getClass/object_getClass/class

objc_getClass

OBJC_EXPORT Class _Nullable
objc_getClass(const char * _Nonnull name)
    OBJC_AVAILABLE(10.0, 2.0, 9.0, 1.0, 2.0);

通过一个类名来获取一个类对象

Class oc  =  objc_getClass((const char *)"NSObject");
        
NSLog(@"%p, %p",oc,[NSObject class] );
2021-02-04 23:03:38.929315+0800 object[1674:47720] 0x7fff88a9be08, 0x7fff88a9be08

object_getClass

OBJC_EXPORT Class _Nullable
object_getClass(id _Nullable obj) 
    OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);

源码实现:

Class object_getClass(id obj)
{
    if (obj) return obj->getIsa();
    else return Nil;
}

可以看出,源码中是返回了对象的isa,如果传入的是 instance 对象,返回的就是类对象,而如果传入的是类对象,返回的就是 meta-class, 如果传入的是 meta-class,返回的就是 NSObjectmeta-class

class

返回 class 的类对象。

你可能感兴趣的:(objc_getClass/object_getClass/class)