autorelease 什么时候释放
2016-06-02 09:57
155 查看
在Iphone项目中,大家会看到一个默认的Autorelease pool,程序开始时创建,程序退出时销毁,按照对Autorelease的理解,岂不是所有autorelease
pool里的对象在程序退出时才release, 这样跟内存泄露有什么区别?
答案是,对于每一个Runloop, 系统会隐式创建一个Autorelease pool,这样所有的release pool会构成一个象CallStack一样的一个栈式结构,在每一个Runloop结束时,当前栈顶的Autorelease
pool会被销毁,这样这个pool里的每个Object会被release。
那什么是一个Runloop呢? 一个UI事件,Timer call, delegate call, 都会是一个新的Runloop。
pool里的对象在程序退出时才release, 这样跟内存泄露有什么区别?
答案是,对于每一个Runloop, 系统会隐式创建一个Autorelease pool,这样所有的release pool会构成一个象CallStack一样的一个栈式结构,在每一个Runloop结束时,当前栈顶的Autorelease
pool会被销毁,这样这个pool里的每个Object会被release。
那什么是一个Runloop呢? 一个UI事件,Timer call, delegate call, 都会是一个新的Runloop。
相关文章推荐
- CAS实现SSO单点登录原理
- 把网站部署到IIS后访问不了,报错IIS管理器无法验证此内置账户是否有访问权
- CSS美化超级链接和鼠标
- 图灵机器人
- 242. Valid Anagram
- SQL中将用户的出生年月转换成对应的年龄
- iOS 身份证校验详解
- AtomicInteger简介
- iOS异步图片加载优化与常用开源库分析
- 为什么选择Kubernetes作为云平台的微服务治理框架 | 网络公开课
- Mysql的varchar排序按照数字顺序
- 关于Block的copy和循环引用的问题
- 堆栈的区别Java
- 第三方组件
- 慕课爬虫
- 一种高性能与高可用的流媒体系统之媒体流状态管理方法
- 软件测试笔记
- ol2已知经纬度在图层上画圆
- jsp页面中的post提交方式
- AndroidStudio使用Git上传代码至GitHub