内存管理
10月29日 -
-----------------------------------------------内存管理----------------------------------------------------
- 所有的类都有delloc方法,回收内存的时候调用。
- 类的release方法并非用来释放内存,而是用来释放自己的一次引用计数。
- 引用计数和指针的个数没有关系,跟这个东西是不是对象的拥有者有关。
- 对于UI视图控件,将控件添加到根视图的时候,引用计数+1,防止外部释放,所以在方法内部引用计数+1;
- 当引用计数为0的时候,会调用这个对象的dealloc方法,
- 在dealloc的方法中释放这个对象属性所占用的内存。
- 通过buttonWithType方法创建的UIButton不用release方法, 因为没有alloc或者new。
- 如果在单独一个方法中创建了一个UI控件,返回值为这个控件类型,则,返回值后应该加一个autorelease。
- 类类型的@property要做如下声明
- 如果一个对象放进array当中,会被retain一次,引用计数+1;
- 如果一个对象被加入到根视图上,addSubview 对象会被retain一次,引用计数+1;
- 如果一个alertView调用show方法被显示在试图上,会被retain一次,引用计数+1;
- 连线的属性,无论有没有写property,都需要在dealloc中release一次。
------------------------------------
内存管理的规则:
1、使用一下关键字alloc retain copy new创建的对象,就拥有这个对象, 也称为这个对象的拥有者
2、谁拥有对象, 在用完对象之后负责释放他自己的引用计数。
3、关键字alloc retain copy new的个数要和release的个数配对。
4、autorelease自动释放,会在将来的某个时刻将引用计数-1
retain给对象的引用计数+1
release给对象的引用计数-1