内存管理

2016-07-08  本文已影响13人  G_M

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];这句话不合理,因为刚创建出来就释放了,因为是弱指针

上一篇 下一篇

猜你喜欢

热点阅读