zoukankan      html  css  js  c++  java
  • ios学习笔记之内存管理

    一,内存管理类型定义
         1,基本类型  任何C的类型,eg:
         int,short,char,long,long long,struct,enum,union等属于基本类型或结构体
         内存管理对于C语言的基本类型无效
         2,OC类型(非基本类型)
         任何继承于NSObject类的对象都属于OC类型
         也就是除了C之外的其他类型

    二,OC对象结构
         所有OC对象都有着一个计数器,保留着当前对象被引用的数量,如果计数器为0,那么就真正的释放这个对象。

    三,alloc   retain  release 函数
         1, alloc函数是创建对象使用,创建完成后计数器为1(只用一次)
         retain是对一个对象的计数器+1 (可以多次调用)
         release是对一个对象计数器-1(减到0 对象就会从内存中释放)

         2,oc类中实现了引用计数器,对象知道当前被引用的次数。
         如果需要引用对象,可以给对象发送一个retain消息,这样对象计数器就+1;
         当不需要引用对象了,可以给对象发送release消息,这样对象计数器就-1;
         当计数器减到0,自动调用对象的dealloc函数,对象就会释放内存;
         计数器为0的对象不能再使用release和其他方法。

    四,自动释放池
         自动释放池是OC的一种内存自动回收机制,可以将一些临时变量通过自动释放池来统一回收释放。
         当自动释放池本身销毁的时候,池子里面所有的对象都会做一次release操作。
         任何OC对象只要调用autorelease方法,就会把该对象放到离自己最近的自动释放池中(栈顶的释放池)。

    五,不是用alloc,retain,copy创建的对象,不能使用release释放。

  • 相关阅读:
    CentOS7 64位下MySQL5.7安装与配置(YUM)
    在windows 7中vagrant up 无反应,没任何信息输出
    vagrant在windows下的安装和配置
    html中嵌入flvplayer.swf播放器,播放视频
    FileItem 出现部分中文乱码解决办法
    华为P6-C00电信版,刷机总是失败? FAIL
    MyEclipse发布按钮无效的办法
    Ubuntu 下建立WiFi热点的方法
    Android系统源码学习步骤
    android源代码在线阅读
  • 原文地址:https://www.cnblogs.com/lovewx/p/4432025.html
Copyright © 2011-2022 走看看