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

            //垃圾回收机制:由系统自己管理内存,例如java
            //OC2.0开始支持垃圾回收机制
            //iOS不支持垃圾回收机制
        
            //iOS是通过引用计数来管理内存
            //引用计数是为0,代表此块内存可以被申请到
            //引用计数不为0,代表此块内存正在被占用
            //引用计数+1代表拥有这块内存
            //引用计数-1,代表释放拥有权,当运用计数-1后为0,系统回收内存
            //:对于没有拥有权或者系统收回的内存,不能进行操作

            //**开发人员管理的内存,应该是堆区的内存
        
            //和引用计数相关的方法
            //+alloc:类方法,从堆区申请引用计数为0的内存,然后把引用计数置为1

            retain:实例方法,把该内存的引用计数+1

            release:实例方法,把该内存的引用计数-1

         
            //autorelease:实例方法,把该内存的引用计数,在未来的某个时刻-1
            //:一般会把代码写在自动释放池中,来保证autorelease操作的内存,能够得到释放

            //自定义类做copy----(深拷贝- 拷贝指针+内容)
            //-copy:copy的对象,必须遵循NSCopying协议,实现copyWithNone:方法,copy对引用计数的影响取决于copyWithNone:方法的实现

            //对系统类的copy
            //-copy:拷贝了一个指针,指向该内存区域,并把引用计数+1(浅拷贝-拷贝指针)

            //内存管理原则
            //1.有加必有减,终极目标为0
            //alloc,retain,copy的次数 release,autorelease的次数相同;保证内存使用结束后,及时的释放内存
            //2.谁创建,谁管理,谁增加,谁释放

        //当引用计数为0,进入这个方法,系统收回内存
        //初始化,先初始化父类,再初始化子类
        //销毁时,先销毁子类,再销毁父类

        //dealloc 要对用retaincopy修饰的属性进行释放
    - (void)dealloc
    {
        NSLog(@"系统收回内存");
            //1
        [_name release];
        _name = nil;
            //2
            //    self.name = nil;
        
        [_type release];
        _type = nil;
        
        [super dealloc];
    }

    - (void)setName:(NSString *)name
        //判断新传入的值和之前一样不一样
        //不一样的话,再赋值,来加快执行的效率,降低消耗
    {
            //1
    //    if (_name != name) {
    //        
    //        [name retain];//+1,拥有这个新值
    //        [_name release];//-1,释放旧的值
    //        _name = name;
    //    }
            //2
        if (_name != name) {
            [_name release];
            _name = [name retain];
        }
    }

     
  • 相关阅读:
    js 判断图片是否加载完成(使用 onload 事件)
    使用 css 的 keyframe 实现 loading 动画
    meta标签常用属性
    Chrome开发者工具 debug 调试
    ajaxForm上传文件到本地服务器(封装)
    优化jQuery选择器
    “要有足够的耐心,一点一滴地改变世界”
    Event事件的三个阶段
    css控制页面文字不能被选中user-select:none;
    webstrom打开多个项目,webstrom常用快捷键
  • 原文地址:https://www.cnblogs.com/tian-sun/p/4309607.html
Copyright © 2011-2022 走看看