zoukankan      html  css  js  c++  java
  • objective-c中的内存管理

    Xcode高级版本中引入的ARC机制帮助我们摆脱了枯燥的内存管理,其本质是编译器在编译代码时自动帮我们把内存管理的代码加在了代码中,当然ARC可以在Xcode中关闭,在项目中的Build Settings中Objective-C Automatic Refrence Counting设置为NO即可。ARC全程为Automaic Rerence Counting,顾名思义,自动引用计数

    在oc中每个对象都默认拥有一个引用计数器,统计当前有多少个指针指向该对象,当引用计数器为0时,系统则回收该对象所占用内存空间。

    针对引用计数器有如下对象方法:

    1.retain:计数器+1,返回对象本身;

    2.release:计数器-1,没有返回值;

    3.retainCount:获取当前对象的引用计数器值

    当对象被回收时,必然调用对象的dealloc方法,该方法可重写,但重写时必须在最后加上[super dealloc]调用父类的dealloc方法,使父类回收其需要回收的资源。

    内存管理中有几个比较重要的概念:

    1.僵尸对象:指所占用内存已经被回收的对象,该对象将不能被继续使用;

    2.野指针:指向僵尸对象的指针称为野指针,使用野指针发送selector,即调用方法时会报EXC_BAD_ACCESS运行时错误;

    3.空指针:与c#,java等语言类似,空指针指指针的值为空,不指向任何有效内存,值为nil, NULL,0,给空指针发送selector,即调用方法时不会报错,但没有任何效果。

    内存管理中的几个原则:

    1.需要使用对象,就需要使对象的引用计数器+1,即调用对象的retain方法;

    2.不在使用对象,就需要使对象的引用计数器-1,即调用滴香的release方法;

    3.谁retain,谁release;

    4.谁alloc(new、copy),谁release。

  • 相关阅读:
    DB2 关联更新
    postgresql 开启审计日志
    Delphi D10.X中Tpath引发的单元引用及代码编写的思考
    自己写的函数或者过程与Delphi提供的重名了怎么办?(50分)
    技巧四 Delphi XE3 代码自动提示bug解决
    想开发经典界面吗?
    初涉Delphi下Windows消息机制——同一程序内自定义消息实例
    Delphi的DirectShow开发概述
    delphi接口(抄自万一)
    fkInternalCalc和fkCalculated有何区别?
  • 原文地址:https://www.cnblogs.com/yoran-yang/p/4293546.html
Copyright © 2011-2022 走看看