NSAutoReleasePool使用中drain和release的区别
来源:互联网 发布:java 字符型二维数组 编辑:程序博客网 时间:2024/05/26 05:53
虽然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。
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。
0 0
- NSAutoReleasePool使用中drain和release的区别
- NSAutoReleasePool使用中drain和release的区别
- NSAutoReleasePool使用中drain和release的区别
- NSAutoReleasePool使用中drain和release的区别
- NSAutoReleasePool使用中drain和release的区别
- NSAutoReleasePool使用中drain和release的区别
- NSAutoreleasePool的release和drain的区别
- NSAutoreleasePool的release和drain的区别
- 关于 NSAutoreleasePool中 release 与 drain 区别
- 【pool drain】和【pool release】区别
- release 和 drain
- NSAutoreleasePool释放时为什么经常用drain,不用release
- NSAutoreleasePool 和 @autoreleasepool blocks 区别
- vc中release和debug的区别
- vc中release和debug的区别
- vc中release和debug的区别
- VC中Debug和Release的区别
- vc中release和debug的区别
- 从头开始写项目Makefile(六):参数传递、条件判断、include
- Climbing Stairs
- 从头开始写项目Makefile(七):统一目标输出目录
- POJ 1269 Intersecting Lines(两直线间关系判定)
- 十进制转换为十六进制
- NSAutoReleasePool使用中drain和release的区别
- <base href="<%=basePath%>"
- _USRDLL _AFXDLL _WINDLL _AFXEXT等宏控制的三种dll编译宏的具体含义
- MT7620 OPENWRT中AP CLIENT的配置方法
- DAO设计
- 从头开始写项目Makefile(八):模式规则
- Linux下查找某个命令的源代码
- ASP.NET 未能从配置文件中指定的凭据创建 Windows 用户标记
- 使用IWPRIV配置WIFI