autorelease 什么时候释放

在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。
阅读更多
个人分类: 内存调试
上一篇关于Block的copy和循环引用的问题
下一篇使用NSProxy实现消息转发机制,模拟多重继承
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭