OC对象与引用指针的关系:
OC对象创建完之后如何拿到并使用这个对象呢?使用指针
Car *car = [[Car alloc] init];
[[Car alloc] init]语句会生成并返回一个Car对象,如果不使用一个指针来指向这个对象,那么就无法拿到这个对象就无法使用它。这个指针car就是对Car对象的引用,拿到指针car就等于拿到了这个Car对象。也可以认为指针car就是Car对象的名字。
1、OC对象内存示意图
可见OC对象是放在堆里的,但它的引用(指针)是放在栈里的,因为指针变量不是对象类型。
当作用域结束后,int变量a,b和指针变量car将被回收(销毁),但是car所指的Car对象还存在堆内存中系统并不会自动销毁它,所以在MRC时代,当这个Car对象不再使用的时候是需要程序员手动写代码去销毁的。
2、多对象内存示意图
3、僵尸对象会导致野指针错误
4、僵尸对象检测
勾选该选项之后,如果程序中出现了僵尸对象Xcode会立马报警,方便调试