Class object_getClass(id obj){ if(obj){return obj->getIsa();} else return nil; } 比如: Person *p = [[Person alloc] init] ; Class aclass =object_Class(p); //aclass相当于 [p class]; Class bclass = object_Class(aclass); //bclass 为元类; 3.objc_getClass(const char *_Nonn...
1、如果是instance实例对象,返回class对象; 2、如果是class类对象,返回meta-class对象; 3、如果是meta-class元类对象,返回NSObject(基类)的meta-class对象 4、objc_getMetaClass 获取元类MetalClass 5、objc_getClass 获取对应类Class 6、object_getClass 获取 object 的isa指针对象 二、object_getClass(obj)与[...
object_getClass和class同样可以嵌套,但是object_getClass得到的是他的 isa 指向的地址。即: Person*p=[[Person alloc]init];p->[Personclass]->PersonMetaClass->PersonMetaClass(元类的ISA指针是指向自己的) 意思是 p 的 isa 指向 [Person class] , [Person class] 的 isa 指向 PersonMetaClass 勘误:PersonMe...
long classPtr = ObjCRuntime.object_getClass(handle); c = ObjCObject.getPeerObject(classPtr); } if (c != null) { return c; } return getByType(id.getClass()); } 代码示例来源:origin: robovm/robovm @Callback private static @Pointer long retain(@Pointer long self, @Pointer long sel...
OBJC_EXPORT Class _Nullableobject_getClass(id _Nullable obj) 有意思的是,它跟objc_getClass长得很像,结果类型也一样,但是传参是不一样的, 它传入的是一个对象。 @interfaceBLPerson:NSObject@end@implementationBLPerson@endintmain(intargc,constchar*argv[]){BLPerson*person=[[BLPerson alloc]init];NS...
一、objc_getClass 首先我们看一下objc_getClass的内部实现是:objc_getClass(constchar*_Nonnullname) 从这里只能看出需要传入一个字符串的类名, Returns the class definition of a specified class 返回对应的类对象。请看下面的截图 从这里可以看出是runtime的相关的,我们就可以从苹果开源的源码查看分析 ...
1:Classobjc_getClass(constchat*aClassName)1>传入字符串类名2>返回对应的类对象2.Classobject_getClass(id obj)1>传入的obj可能是instance对象,class对象、meta-class对象2>返回值 a:如果是instance对象,返回class对象 b:如果是class对象,返回meta-class对象 ...
objc_getClass 通过一个类名来获取一个类对象 object_getClass 源码实现: 可以看出,源码中是返回了对象的isa,如果传入的是 instance 对...