OC语言 - 实例对象 | 类对象 | 元类对象

OC 对象

1 - OC 中的对象主要可以分为三种

① instance 对象    (实例对象)

② class 对象         (类对象)

③ meta-class 对象(元类对象)

实例对象

1 - 实例对象是通过类 alloc 出来的对象,每次 alloc 都会产生出一个新的实例对象,占据不同的内存。如下面的 objc1、objc2 就是实例对象

NSObject *objc1 = [NSObject new];
NSObject *objc2 = [[NSObject alloc] init];

NSLog(@"objc1 = %p  objc2 = %p",objc1,objc2);
// objc1 = 0x1038292b0  objc2 = 0x103827c50

2 - 实例对象中存储的信息包括

① isa 指针(系统默认)

② 其他成员变量(你自己声明的)

类对象:类名就代表这类对象

1 - 类对象在内存是独一份,每个类在内存中有且只有一个类对象

复制代码
 1 #import <Foundation/Foundation.h>
 2 #import <objc/runtime.h> // 运行时
 3 
 4 int main(int argc, const char * argv[]) {
 5     
 6     NSObject *objc1 = [NSObject new];
 7     NSObject *objc2 = [[NSObject alloc] init];
 8     
 9     Class obClass1 = [objc1 class];
10     Class obClass2 = [objc2 class];
11     Class obClass3 = [NSObject class];
12 
13     // runtime 函数
14     Class obClass4 =  object_getClass(objc1);
15     Class obClass5 = object_getClass(objc2);
16     
17     // 你会发现都是同一份
18     NSLog(@"obClass1 = %p  obClass2 = %p    obClass3 = %p",obClass1,obClass2,obClass3);
19     // obClass1 = 0x7fff91cb8118  obClass2 = 0x7fff91cb8118    obClass3 = 0x7fff91cb8118
20     NSLog(@"obClass4 = %p  obClass5 = %p",obClass4,obClass5);
21     // obClass4 = 0x7fff91cb8118  obClass5 = 0x7fff91cb8118
22     return 0;
23 }
复制代码

2 - 类对象中存储的信息

① isa 指针

② superClass 指针

③ 类的属性信息、类的对象方法信息

④ 类的成员变量信息、类的协议信息

 .......

元类对象

1 - 每个类在内存中有且只有一份元类对象。它同类对象的内存结构基本一样,但是用途不一样

1     Class obClass3 = [NSObject class];            // 获取类对象
2     Class metaClass = object_getClass(obClass3);  // 获取元类对象
3     NSLog(@"metaClass = %p  obClass3 = %p",metaClass,obClass3);
4     // metaClass = 0x7fff91cb80f0  obClass3 = 0x7fff91cb8118

2 -元类对象中存储的信息

① isa 指针

② superClass 指针

③ 类的类方法信息

 .......

 

posted on   低头捡石頭  阅读(92)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示