例如:
Person *p = [Person new];
-
person *p
会在栈中申请一块空间用于存放p指针变量,由于p是指针变量,所以p储存的是地址 -
[Person new]
会在堆中申请一块空间用于创建Person类的对象,对象除了自身属性外还包含了isa指针,isa存放的是对象的类在代码区中的地址,初始化对象的属性基本数据类型的初始值为0如:int i = 0
,objc的指针类型初始值为nil
,如:NSString *str = nil
,c语言的指针类型初始值为NULL
,如:int *p = NULL
,(其实nil和NULL都是一个宏 等价于 0)最后返回对象的地址 -
对象只有属性而没有方法,因为每一个类的方法都是一样,所以对象的方法不保存在堆中,调用方法是通过
isa
指针找到类再调用类的方法
网友评论