OC中有3种对象,分别是1.实例对象,2.类对象,3.元类对象
1.instance(实例对象)

里面存放了isa以及具体的值.isa的地址也就是这个对象的地址.
2. class(类对象)

属性信息 :
- 类对象中的属性信息并不是具体的值,而是变量名,类型等这些信息,具体的值是存储在实例中.
3.meta-class(元类对象)

4.注意
以下代码获取的objcetClass是class对象,并不是meta-class对象
Class objectClass = [[NSObject class] class];
//获取的一直是类对象.
- -(Class)class、+(Class)class;
返回的就是类对象
- (Class) {
return self->isa;
}
+ (Class) {
return self;
}
5. objc_getClass & object_getclass
- Class objc_getClass(const char *aClassName)
- 传入字符串类名
- 返回对应的类对象
// objc_getClass(<#const char * _Nonnull name#>)
// NSString *className = @"MyClassName";
// Class myClass = objc_getClass(className.UTF8String);
Class className1 = objc_getClass("NSObject");
NSLog(@"%@ -- %@ -- %@",className1,[NSObject class],object_getClass([NSObject class]));
// NSObject -- NSObject -- NSObject
- Class object_getClass(id obj)
1.传入的obj可能是instance对象,class对象,meta-class对象
2.返回值
a. 如果是instance对象,返回class对象
b. 如果是class,返回meta-class对象
c. 如果是meta-class对象,返回NSObject(基类)的meta-class对象
1039

被折叠的 条评论
为什么被折叠?



