zoukankan      html  css  js  c++  java
  • IOS内存约定-【ios】

    IOS中内存采用引用计数的方式,在释放内存编程时采用约定的方式,在这里不长篇大论具体内存的原理,只从实用角度出发记录下如何根据这些约定来释放内存。

    具体约定为:

    当你使用newalloccopy 开头的方法名创建对象后,当不需要此对象时,需要通过调用这个对象的release方法来减少引用计数;retain对象之后也需要调用release方法来减少引用计数。

    其它方法创建的对象都不需要调用release方法来释放对象。

     

    只要记住这条约定,编程中80%的内存管理都不需要再考虑是否需要release还是不需要了。

     

    当你自己的方法中不是以newalloc 或 copy 开头的方法名创建对象时,可以使用 autolease返回对象,这样调用者就不需要释放对象了。

     

    在程序中跟内存相关的需要注意的地方为:

    • 变量声明
    @property (nonatomic, retain) UILabel* label;
    
    @property (nonatomic, assign) NSInteger intValue;
    
     
    
    @synthesize label = _label;

     

    其中对于对象类型使用了retain,这样这个对象就需要被releaserelease的地方为dealloc方法内。

     

    对于基本数据类型,使用了assign,也就是直接赋值方式就可以,不存在对象引用计数这种问题,因此也就不需要release

     

    在合成方法时,这里采用了一个变量名约定,也就是_变量名,这样带下划线的变量就是内部变量,而没有下划线的其实就是属性名,这样真正的内部变量其实是带下划线的那个名字,因此在释放内存时就要使用_变量名.release方法。

     

    • viewDidUnload方法
    - (void)viewDidUnload
    
    {
    
    self.label = nil;
    
    [super viewDidUnload];
    
    }

     

    这里主要是对retain修饰的属性进行释放,只要把相关属性设置为nil就可以,(主要原因是在生成设置属性的代码中就有对原有对象的释放)

     

    • dealloc方法

     

    - (void)dealloc
    
    {
    
    [_label release];
    
    [super dealloc];
    
    }

     

     

  • 相关阅读:
    vue this.$refs 获取的值为undefined?
    如何调用 vuex
    git 更新远程分支列表
    wordpress 支持上传中文名称文件
    wordpress 修改默认分页条数
    wordpress 不用插件添加友情链接
    wordpress 代码获得菜单的方法
    wordpress 添加友情链接
    【转】 WordPress数据库及各表结构分析
    WordPress 安装教程
  • 原文地址:https://www.cnblogs.com/dreampursuer/p/3508594.html
Copyright © 2011-2022 走看看