1.内存中的五大区域
栈:存储局部变量
堆:允许程序员手动在堆区申请指定的连续的字节数的空间来使用
BSS段:存储未初始化的全局变量,静态变量
数据段(常量区):存储已经初始化的全局变量,静态变量,常量数据
代码段:存储程序的代码
2.类加载
当类第一次被访问的时候,会将类存储在代码段中,这个过程叫做类加载.
一旦类被加载到代码区,直到程序结束的时候才会被回收
1).当我们创建对象的时候,肯定需要访问这个类,因为只有访问了类才知道类中有哪些成员
2).如果只是声明类指针的时候,也会访问这个类,以确定这个类是否真的存在
3.对象在内存当中是如何存储的
1).类的本质:我们自定义的数据类型
HMPerson *p1 = [HMPerson new];
2).HMPerson *p1;
仅仅是生命了1个指针变量而已,这个指针变量的类型是HMPerson*
p1是局部变量,存储在栈区
p1只能存储地址
p1是1个指针变量,不是1个对象
3).[HMPerson new];
真正的创建对象
new做的事情
a. 在堆内存中申请一块合适大小的空间
b. 在申请的这块空间中根据类的模板创建对象
类中有那些属性,就把类的属性依次的挨个
isa,是1个指针
这个isa指针指向代码段中的类
相同类 isa相同
c.初始化对象的属性,为对象的属性赋默认值
->如果属性的类型是