02.OC对象的本质

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

  1. Class objc_getClass(const char *aClassName)
  1. 传入字符串类名
  2. 返回对应的类对象
// 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
  1. 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对象

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值