对象是什么时候被release的?
2015-02-23 17:21
190 查看
引用计数为0时。
autorelease实际上只是把对release的调用延迟了,对于每一个Autorelease,系统只是把该Object放入了当前的Autorelease pool中,当该pool被释放时,该pool中的所有Object会被调用Release。对于每一个Runloop, 系统会隐式创建一个Autorelease pool,这样所有的release pool会构成一个象CallStack一样的一个栈式结构,在每一个Runloop结束时,当前栈顶的Autorelease
pool会被销毁,这样这个pool里的每个Object(就是autorelease的对象)会被release。那什么是一个Runloop呢? 一个UI事件,Timer call, delegate call, 都会是一个新的Runloop
autorelease实际上只是把对release的调用延迟了,对于每一个Autorelease,系统只是把该Object放入了当前的Autorelease pool中,当该pool被释放时,该pool中的所有Object会被调用Release。对于每一个Runloop, 系统会隐式创建一个Autorelease pool,这样所有的release pool会构成一个象CallStack一样的一个栈式结构,在每一个Runloop结束时,当前栈顶的Autorelease
pool会被销毁,这样这个pool里的每个Object(就是autorelease的对象)会被release。那什么是一个Runloop呢? 一个UI事件,Timer call, delegate call, 都会是一个新的Runloop
相关文章推荐
- new 一个对象的时候加括号和不加括号有什么区别
- Java的对象实例是什么时候被创建
- new一个对象的时候,几种情况各有什么不同
- 当几个引用指向同一个java对象的时候,用什么办法能让这几个引用都变成 null?
- objective-c内存管理的实现机制,并简述什么时候由你负责释放对象,什么时候不由你释放?
- 创建字符串对象的时候,使用字面值和使用new String()构造器这两种方式有什么不同?
- 【Hibernate】中Query对象在获取表的所有的数据的时候,使用list()和 iterator()有什么区别?
- 如果autorelease NSAutoreleasePool对象会发生什么?
- 对象在创建的时候都发生了什么?
- 76、Singleton和prototype分别在什么时候创建对象?(9条)
- vba编程不知道该使用什么对象属性方法实现操作的时候用宏录制来查阅代码
- 什么时候应该使用Autorelease Pool
- 将不确定变为确定~对象被new后什么时候会抛System.NullReferenceException
- 什么时候应该使用Autorelease Pool
- iOS开发-AutoreleasePool是什么时候销毁的?
- Query对象在获取表的所有的数据的时候,使用list()和 iterator()有什么区别?
- 哈哈,俺可以在家里上网了,呵呵,可以想什么时候上就什么时候上,想上几个小时就几个小时......
- 什么时候应该使用 ==?什么时候应该使用 Equals?
- 什么时候printf返回0?
- 在你使用Google的时候发生了什么事情?