第34条:以“自动释放池块”降低内存峰值

Objective-C对象的生命周期取决于其引用计数。
释放对象有两种方式:一种是调用release方法,使其保留计数立即递减;另一种是调用autorelease方法,将其加入“自动释放池中”。自动释放池用于存放哪些需要在稍后某个时刻释放的对象。清空自动释放池,系统会向其中的对象发送release消息。

一般情况下,无需担心自动释放池的创建问题。iOS应用程序运行在Cocoa Touch环境中。系统会自动创建一些线程,比如说主线程或GCD机制中的线程,这些线程默认都有自动释放池,每次执行“事件循环(event loop)”,就会将其清空。因此,不需要自己创建“自动释放池块”。通常只有一个地方需要创建自动释放池,那就是在main函数里。

@autoreleasepool语法还有个好处:每个自动释放池都有其范围,可以避免无意间误用了那些在清空池后已为系统所回收的对象。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容