清秋梧桐

导航

内存管理

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

posted on 2012-11-13 17:56  清秋梧桐  阅读(159)  评论(0编辑  收藏  举报