@interface Person:NSObject
{
@public
int age;
double height;
double weight;
}
-(void) eat:(String) food;
-(void) walk;
-(void) sleep;
@end
- 通过类创建对象 Person *p = [Person new](每次创建一个对象都会分配一个新的存储空间);系统会帮我们同时在堆空间创建一共类对象,实例对象是我们自己手动new创建的
- 1、开辟存储空间,通过new方法创建对象会在堆内存中开辟存储空间
- 2.初始化所有属性
- 3.返回指针地址,在栈空间有个局部变量P存储地址(指向堆空间)
- 创建对象的时候返回的地址其实就是类的第0个属性的地址,但是要注意的是,类的第0个属性并不是我们自己定义的第一个属性,而是一个叫做isa的属性,isa是一共指针,占8个字节,会指向类对象
- 类也是个对象,平时说所的创建对象就是通过一共类对象来创建
- 类对象:系统会自动帮我们在堆空间创建一个类对象,他有一个方法列表,存储着当前类中所有的方法,上述的isa指针就是指向了这么一个类对象
- 对象方法的执行过程:[p walk]
- 在栈内存中找到P这个局部变量,在找到这个P指向的存储空间,找到对应存储空间的isa指针,找到isa指针对应的类,再在这个类对应的方法列表中寻找这个方法
- 类方法的调用过程
- 变量直接在堆内存中寻找有没有这个类对象,找到这个类后会在对应的方法列表中寻找对应的方法