zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Windows服务的安装及配合定时器编写简单的程序
    关于VS2019使用Git时遇到的Bug
    记一次工作中的小BUG
    .Net WebApi接口Swagger集成简单使用
    kettle 创建数据库资源库
    C# 语法 i++;++i;i--;--i
    MSDN
    Jenkins持续集成(下)-Jenkins部署Asp.Net网站自动发布
    Jenkins持续集成(上)-Windows下安装Jenkins
    自动发布-asp.net自动发布、IIS站点自动发布(集成SLB、配置管理、Jenkins)
  • 原文地址:https://www.cnblogs.com/hui1107464497/p/4508787.html
Copyright © 2011-2022 走看看