iOS 内存管理:从手动到自动的全面解析
1. 手动内存管理基础
1.1 自动释放池与对象引用
在手动内存管理中,自动释放池起着关键作用。当对象接收到 -autorelease 消息时,它会被添加到当前的自动释放池中。自动释放池由应用的事件循环创建和释放。在每个事件分发到代码之前,会创建一个自动释放池,当代码执行完毕,控制返回事件循环时,自动释放池会被排空,销毁其中的临时对象。
例如,以下代码展示了如何在方法中使用自动释放池:
- (void)fosse
{
NSArray *jazz = [self allThatJazz];
self.modernJazz = jazz;
}
在这个例子中,如果 jazz 数组是自动释放的,它会在当前自动释放池排空时被销毁。
1.2 手动内存管理规则总结
手动内存管理的主要规则可以总结如下:
- 创建对象(如 [[Class alloc] init] 或 -copy )后,有两种处理方式:
- 使用对象后发送 -release 消息。
- 发送 -autorelease 消息。
- 消息返回的对象可以在方法执行期间安全使用。
- 如果在方法返回后仍可能使用对象引用,应保留该对象(通常由属性的 setter 方法处理)。
- 如果代
超级会员免费看
订阅专栏 解锁全文
1192

被折叠的 条评论
为什么被折叠?



