黑马程序员-autorelease pool
Autorelease:可以延迟给对象发送release消息。发送一个autorelease消息给对象,证明该对象在一定时间内有效,一定时间后会对该对象进行释放,进行一次release。
一个autorelease pool就是一个NSAutorelease pool对象。
一个程序中所有的autorelease pool以栈的形式组织,新建的pool会被放在栈顶,当发送autorelease消息给autorelease时,该对象被放入位于栈顶的pool中,发送drain给pool时,pool中的所有对象都被会release。如果不是发给栈顶的pool时,其上的pool 都会受到drain消息。
一个对象被加到一个pool很多次,只要多次发送autorelease消息给这个对象就可以;同时,当这个pool被回收时,这个对象也会收到同样多次release消息。简单地可以认为接收autorelease消息等同于:接收一个retain消息,同时加入到一个pool里;这个pool用来存放这些暂缓回收的对象;一旦这个pool被回收(drain),那么pool里面的对象会收到同样次数的release消息。
使用情况:
大多数情况下使用UI框架的时候都会自动帮你生成一个pool,这个pool可以自己生成,而不用创建。所以当你给一个对象发送autorelease消息,可以将该对象加入到pool。
需要自己创建的情况:
1、没有UI框架或者其他含有autoreleasepool的框架,需要手动创建。
2、当有循环体创建大量的变量时,创建自己的pool能够减少程序占用内存的峰值。
3、创建线程时必须创建这个线程自己的autorelease pool。
-使用alloc和init消息来创建pool,发送drain消息则表示这个pool不再使用。pool的创建和drain要在同一上下文中,比如循环体内。
黑马程序员-autorelease pool的更多相关文章
- 黑马程序员——【Java高新技术】——代理
---------- android培训.java培训.期待与您交流! ---------- 一.“代理概述”及“AOP概念” (一)代理概述 1.问题:要为已存在的多个具有相同接口的目标类的各个方法 ...
- 黑马程序员+SQL基础(上)
黑马程序员+SQL基础 ---------------<a href="http://edu.csdn.net"target="blank">ASP ...
- 黑马程序员+Winform基础(上)
黑马程序员+Winform基础 ---------------<a href="http://edu.csdn.net"target="blank"> ...
- 黑马程序员—C语言的函数、数组、字符串
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.函数 定义:函数是代码复用的一种机制. 函数的基本语法: 返回类型 函数名 ( 参数类型 参 ...
- 黑马程序员:Java基础总结----泛型(高级)
黑马程序员:Java基础总结 泛型(高级) ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 泛型(高级) 泛型是提供给javac编译器使用的,可以限定集合中的输入类型 ...
- 黑马程序员:Java基础总结----类加载器
黑马程序员:Java基础总结 类加载器 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 类加载器 Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个 ...
- 黑马程序员:Java基础总结----静态代理模式&动态代理
黑马程序员:Java基础总结 静态代理模式&动态代理 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 静态代理模式 public class Ts { ...
- 黑马程序员:Java基础总结----枚举
黑马程序员:Java基础总结 枚举 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 枚举 为什么要有枚举 问题:要定义星期几或性别的变量,该怎么定义?假设用1-7分别 ...
- 黑马程序员:Java基础总结----反射
黑马程序员:Java基础总结 反射 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 反射 反射的基石:Class类 Class类代表Java类,它的各个实例对象又分别 ...
- 黑马程序员:Java基础总结----JavaBean 内省
黑马程序员:Java基础总结 JavaBean 内省 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! JavaBean 内省 软件包 java.beans 包含与开 ...
随机推荐
- apache限制同一ip大并发访问及下载
内容来自以下网站整理 http://www.jb51.net/article/58060.htmhttp://www.2cto.com/os/201202/120665.htmlhttp://blog ...
- 在simplescalar中添加基于PISA架构的指令
用sim-safe工具进行模拟.最近看代码的一点点心得记录一下. sim-safe工具:不检查所有指令错误,检查内存对齐和所有内存操作的内存访问权限 程序从main.c的main()函数中进入 int ...
- python random
import randoma = random.randrange(0,5)print(a)本来很正常的一段代码,用pycharm就报错,控制台就可以运行,原来random 和自带的random 同名 ...
- Matrix Calculator
表达式分析+矩阵+计算器+寄存器=矩阵计算器 怎么想起来搞这个呢.. //刚看龙书兴致勃勃要搞表达式分析 这个寄存器比较简陋,26字母+4缓存,//字母不分大小写 当然,不只能算矩阵,还能算数= = ...
- div赋值,取值和input赋值,取值
一.div取值 <div id="txtXiaofei" class="txt-panel">你好</div> 获取div的值$(&qu ...
- zabbix微信告警实践
首先你得有个企业号!!!具体操作步骤可以参考http://itnihao.blog.51cto.com/1741976/1733245,里面写的很详细就不重复了. 微信公众号注册并配置完成后,还需要让 ...
- python学习笔记(一):作图
1.需要导入的包 import seaborn as sns import numpy as np from numpy.random import randn import matplotlib a ...
- GO_order
Gpos Q8RP81 有GO:0000015 P47437 有GO:0000049 P06535 有GO:0000155 Q99027 有GO:0000160 P35594 有GO:0000166 ...
- android ListView点击item返回后listview滚动位置
1.Don't work when dynamically loading content Parcelable state; @Override public void onPause() { // ...
- 类的static成员并用其实现一个单例模式
对于特定类型的全体对象而言,有时候可能需要访问一个全局的变量.比如说统计某种类型对象已创建的数量.如果我们用全局变量会破坏数据的封装,一般的用户代码都可以修改这个全局变量,这时我们可以用类的静态成员来 ...