1. 引用计数器:用来保存当前对象有几个东西在使用它(数字)
2. 引用计数器的作用:用来判断对象是否应该回收内存空间(如果对象不等于nil,当引用计数器为0,此时要挥手对象的内存空间)
3. 引用计数器的操作: retain 使用引用计数器+1
release 使得引用计数器-1
retain count 得到引用计数器的值
4. 如果一个被释放的时候,会“临终遗言”(会调用该对象的dealloc方法)
注意:
1)dealloc方法是NSObject的,一般我们要重写dealloc方法
2)在dealloc方法的内部,要调用[super dealloc];
5.内存管理:对象如果不在使用了,就应该回收他的空间,防止造成内存泄漏
6.内存管理的范围: 所有的继承了NSObject的对象的内存管理,基本数据类型的数据内存不需要我们进行管理
7.内存管理的原则:
一
如果对象有人使用,就不应该回收
如果你想使用这个对象,应该让这个对象 retain一次
如果你不想使用这个对象了,应该让这个对象relase一次
二
谁创建 谁release
谁retain 谁release
ARC
1.指针的分类:
1)默认情况下,所有的指针都是强指针,关键字strong
2)弱指针: __weak关键字修饰的指针
2. 什么是ARC
自动引用计数,当ARC开启式,编译器将自动在代码合适的地方插入retain release 和 autorelease
ARC与其他语言的”垃圾回收”机制不同,ARC是编译器的特性,”垃圾回收”运行时的特性
3. ARC的判断准则: 只要没有强指针指向对象,对象会被释放
4.__strong 是一个修饰符,修饰这个指针是一个强指针 __weak修饰这个指针是弱指针
@property的参数: strong相当于原来的retain(适用于OC对象类型),成员变量是强指针
weak: 相当于原来的assign,(适用于OC对象类型),成员变量是弱指针
assign:适用于非OC对象类型(基础类型)
5. ARC使用注意事项:
1)ARC中,只要弱指针指向的对象不再了,就直接把弱指针做清空(赋值nil)操作
2)__weak Person *p =[(Perspn alooc)init];这句话不合理,因为刚创建出来就释放了,因为是弱指针
网友评论