zoukankan      html  css  js  c++  java
  • ObjectiveC 内存管理

         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,一避免接收到低内存警告。

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

  • 相关阅读:
    zoj 1033 与其说是搜索,不如说是枚举
    hdu 4294 数学分析+搜索
    新的篇章
    Silverlight 利用DataGrid行加载事件动态控制行列显示
    (转)Excel中“不同的单元格格式太多”问题解决方法
    EasyUI tree的三种选中状态
    JS监听手机返回键
    Silverlight ComBox获取当前选中项的值
    DataGrdid 利用结果集反向转换成数据List
    silverlight 动态设置下拉框选中值
  • 原文地址:https://www.cnblogs.com/CoderPlace/p/2958881.html
Copyright © 2011-2022 走看看