NSAutoReleasePool使用中drain和release的区别
为什么80%的码农都做不了架构师?>>>
虽然ARC引入之后NSAutoReleasePool的使用有了很大变化,但是了解NSAutoReleasePool的机制还是十分必要的,下面主要说一下:
NSAutoReleasePool * pool = [NSAutoReleasePool alloc] init];
//do something
之后,
[pool drain] 和 [pool release] 的区别:
release,在引用计数环境下,由于NSAutoReleasePool是一个不可以被retain的类型,所以release会直接dealloc pool对象。当pool被dealloc的时候,pool向所有在pool中的对象发出一个release的消息,如果一个对象在这个pool中autorelease了多次,pool对这个对象的每一次autorelease都会release。在GC环境下release是一个no-op操作(代表没有操作,是一个占据进行很少的空间但是指出没有操作的计算机指令)。
drain,在引用计数环境下,它的行为和release是一样的。在GC的环境下,这个方法调用objc_collect_if_needed出发GC。
因此,重点是:在GC环境下,release是一个no-op,所以除非你不希望在GC环境下出发GC,你都应该使用drain而不是使用release来释放pool。
转载于:https://my.oschina.net/dake/blog/196645
NSAutoReleasePool使用中drain和release的区别相关推荐
- Visual Studio Debug和Release的区别及obj的作用
一.Debug和Release的区别 1.Debug:调试版本,包含调试信息,所以容量比Release大很多,并且不进行任何优化(优化会使调试复杂化,因为源代码和生成的指令间关系会更复杂),便于程序员 ...
- POPTEST老李谈Debug和Release的区别(c#) 1
POPTEST老李谈Debug和Release的区别(c#) poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请 ...
- 关于VS项目平台的x86,x64,Any CPU以及Debug和Release的区别
相信对于很多刚接触打包程序的同志来说,关于x86,x64,Any CPU这三个项目平台,以及解决方案配置Debug和Release有什么区别?这个问题一定有许多的困惑,甚至不乏一些已经工作了很久的老程 ...
- Debug和release版本区别 原码反码补码的转换及存储
#define _CRT_SECURE_NO_WARNINGS 1 //Debug和release版本区别(VS2019版) //例子 #include<stdio.h> //int m ...
- cordon、drain、delete node区别
cordon.drain.delete node区别 主要目的:导致node处于不可调度状态,新创建的pod容器不会调度在node上. cordon 将node置为SchedulingDisabled ...
- Debug模式和Release模式区别
VC6.0中的Debug模式和Release模式区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序.Release 称为发布版本,它往往是进行了各 ...
- snapshots版本和release版本区别
snapshot版本和release版本区别 在java开发过程中,我们经常会看到代码仓库中的某些项目版本以release或snapshots结尾,现在说说这两个版本之间有什么区别. 一般来说snap ...
- self.view = nil 和[self.view release]的区别
再看视频的时候很多地方对于对象的释放老师分别用了两种方式: 1:release.减1的引用技术; 2:直接用nil赋值; 困惑来了,两种方式有啥区别呢? 在用retain或者copy的时候,self. ...
- debug和release的区别
1.Debug和Release有什么区别,为什么要使用Release版本! 2.怎么把Debug转成Release Debug版本包括调试信息,所以要比Release版本大很多(可能大数百K至 数M ...
最新文章
- PHP上传图片三个步骤
- python连接mongo数据库
- mysql单表索引个数_MySQL性能:多个表与单个表和分区上的索引
- java 获得站点地址_JavaWeb项目里面的路径获取方法总结
- c语言选择法排序案例,谁能给我一个c语言选择排序法的简单例子
- 我在中关村,给不了的你爱的国贸(ZZ)
- ssh客户端_Termius for Mac(SSH客户端) v6.3.0
- C++成员函数的重载、覆盖与隐藏
- c# json转换实例
- Atitit enhance dev eff read req提升开发效率 可读性规范 目录 1. 提升效率的俩大原则	1 2. 命名规范 见名字知道意思	1 3. 层次结构缩减 单层 vs 双
- C语言再学习-- 大端小端详解(转)
- 从零玩转第三方登录之QQ登录
- Excepted in :flat namespace
- win10常用快捷键合集
- js:判断页面在 微信 微博 QQ 支付宝 钉钉 内置浏览器内打开
- React之Protals详解
- Modelsim搭建具有各组件的UVM验证平台
- excel如何将内容拆分
- python 保存图片
- 在 Ubuntu 中安装 DOSBox 玩老游戏