zoukankan      html  css  js  c++  java
  • ObjectiveC学习之旅(六)内存管理4自动释放池

    一、O-C当中的内存释放,并不是像java/.net那样有一个自动的释放池,开发人员不用去关心有关内存释放的问题,O-C里面的自动释放池比c语言的手动内存管理要好一些,但是相对于java/.net来说又弱一些,所以说O-C当中的释放属于半自动的释放池。

    二、什么是自动释放池

      1、Autorelease pool

      自动释放池(Autorelease pool)是OC的一种内存自动回收机制,可以将一些临时变量通过自动释放池来回收统一释放

      自动释放池本事销毁的时候,池子里面所有的对象都会做一次release操作

      2、autorelease

      任何OC对象只要调用autorelease方法,就会把该对象放到离自己最近的自动释放池中(栈顶的释放池)。

    三、如何创建一个自动释放池

    //ios5.0新方式

    @autoreleasepool

    {

    }

    //ios5.0之前的老方式

    NSAutoreleasePool *pool=[[NSAutoreleasePool alloc]init];

    [pool release];

    四、自动释放池如何释放对象内存

      黄金法则:如果对一个对象使用了alloc,[mutable]copy,retain,那么必须使用相应的release或者autorelease.

    五、自动释放池栈式结构管理

    自动释放池原理:

    自动释放池的原理类似于一个数组的原理,我们每调用一个autorelease就会有个对象挂到内存中去,系统里面就会根据这个池子销毁的时候把池子里面的内容全部销毁。

  • 相关阅读:
    关于工作中Git相关的总结
    浅谈MySQL的优化
    由内搜推送思考Kafka 的原理
    SOA和微服务架构
    Centos7.2 搭建Lamp服务器以及迁移WordPress个人博客详细过程
    MyISAM和InnoDB索引实现区别
    图解高内聚与低耦合
    图解Java常用数据结构(一)
    Java源码安全审查
    Java高并发之锁优化
  • 原文地址:https://www.cnblogs.com/caishuhua226/p/2830331.html
Copyright © 2011-2022 走看看