Objective-C 内存管理

     ARC很方便也很好,但是对于有强迫症的程序员还是喜欢自己管理内存,有种自己控制一切的感觉。而自己管理内存却要冒着很大的风险,稍不留意就会导致内存泄漏或者内存被过早地收回。好在Objective-C从许多方面帮助我们写出健壮的程序。在Objective-C中所有的对象都分配在堆上,通过指针访问。这样可以大大地提高对象的生命周期,方便内存的管理,但是如果不及时的释放不需要的内存块,程序将收到低内存警告,进而导致程序被异常终止。因此,Objective-C引入了引用计数功能,方便程序在不需要的时候是释放内存。

  想要写出健壮的应用程序,有以下几条规则需要遵循:

  1. 对于程序本身具有所有权的对象,一定要在该对象作用域结束之前调用release方法。何谓所有权,就是当前模块通过调用alloc,new或者copy方法所生成的对象。
  2. 对于其他模块或者方法返回的对象,如果方法名字中不含有alloc,new或者copy字眼的,则需要对返回的对象首先调用retain方法,防止对象被过早地release。
  3. 一定要保证alloc,new,copy和retain方法的调用次数的总和等于release方法的调用次数。
  4. 尽量避免手工生成autoReleasePool,因为系统会自动在每个runLoop的开始自动生成一个autoReleasePool。有一种情况比较特殊,在一个循环体内生成大量的autorelease对象时,最好手动维护一个autoReleasePool,一避免接收到低内存警告。

  遵循以上规则,足以保证程序的健壮性。

posted @ 2013-03-14 10:31  CoderZHY  阅读(115)  评论(0编辑  收藏  举报