• oc基础-oc中的内存管理arc


     

    1.有alloc,new,copy创建出来的对象就必须有release,在类中是retain对oc类型对成员在该类对dealloc方法中也要release

    2.一旦对象直接有引用关系,那么就一定有retain,同时在主对象销毁时,也必须对其引用对对象release。但是对象引用时,在retain时

        注意是否引用对时同一个对象,若是不同对象就得先release旧对象,再retain新对象

    代码:

    -(void)setDog:Dog dog
    
    {
    
      if(dog!=_dog)
    
      {
    
        [_dog release];
    
        [dog ratain];
    
        _dog=dog;
    
      }
    
    }

    举例:一个人买了一辆车,那么现在这个人拥有了这辆车,也就是车的retain一次,当这个人买了新车了,那么之前那辆车就和这个人没有关系了

            那么就的release一次旧车,然后再retain一次新车,若这辆车没有换,那么就不做任何操作。如果人挂了的话,这辆车就会可能给别人,所

            以,必须再人挂的时候,将车release一次,相当于解除了这个人和这辆车的关系了

    3.@property关键字,用于简化我们频繁的写set,get的代码,他将会自动生产对于的方法,和字段(都是有一定的命名规范的,setXx ,xx,_xx)

       @property的参数:

           a.set方法内存管理的参数(各参数不能同时有)

              retain:会自动release旧对象,retain新对象,适用于oc类型对象,如2代码

              assign:直接赋值给对象成员,适用于非oc类型的对象

          copy:release旧值,copy新值

       b.是否生成set方法  (各参数不能同时有)

          readwrite:可读可写,即set和get方法都会生成

          readonly:只读,只生成get方法

          c.多线程管理(各参数不能同时有)

        nonatomic:性能高,通常都是用该参数

            atomic:性能低,默认的参数

          d.setter和getter重设方法的名称

        setter:给set方法重命名,但是必须有冒号 ' : '

        getter:给get方法重命名,一般用在bool类型的属性上

    eg。 @property (nonatomic,readwrite,assign,setter=abc: )  int age

           @property (nonatomic,retain) Dog dog

      当用了setter或getter重命名方法时,再使用该对象时可以直接用  对象.成员名称 来取值或赋值,工具会自动检测时再用get还是

      set方法的

    4.@class 关键字:声明一个类,但是没有类里的实现,仅仅时做一个声明,给编译器看的,再运行的时候才去找实现

        代替的import导入文件

        使用的好处:解决里两个类互相引用的问题(import时不能互相导入的)

            提高类程序的性能(用import的话,每次被导入的文件被改动,都会重新复制一份到当前类中,消耗性能,而class不用管)

    5.当两个类互相引用时,再各自当dealloc方法中就必须对引用对对象release一次,这样就导致两个对象被咬死,无法释放内存,

     解决方案:再其中任意一个类中,将引用另一个类对熟悉对property参数写成assign

  • 相关阅读:
    A/B test模块使用以及配置
    Linux下的tar压缩解压缩命令详解
    php mysql转义特殊字符的函数(转)
    cas server + cas client 单点登录 原理介绍
    php二维码的生产以及下载
    shiro 获取已经登录的用户
    Sql 根据多条件查询重复的数据 MySQL删除重复数据
    js base64 转PDF并下载,js baser64转图片并下载
    当同时安装Python2和Python3后,如何兼容并切换使用详解(比如pip使用)
    我的博客初始“话”
  • 原文地址:https://www.cnblogs.com/hui1107464497/p/4508787.html
Copyright © 2020-2023  润新知