【发布时间】:2012-10-01 09:28:55
【问题描述】:
我正在开发一款 iPad 照片拼贴应用程序,它可能会同时在屏幕上绘制数百张 UIImageViews。
有一个按钮可以让用户“重新创建”,假设在所有照片上运行for 循环到[photo removeFromSuperview],然后按该顺序初始化一个新批次。
我正在使用 ARC,我的控制台告诉我,我的 Photo 的 dealloc 方法直到下一批被绘制后才会被调用,这意味着我遇到了内存问题,即使我正在尝试在添加下一组之前删除第一组。
有没有办法 1) 等到所有照片都被正确地释放或 2) 强制所有照片在 ARC 下立即释放?
【问题讨论】:
-
Radu 是对的,一旦您删除图像视图并删除对它们的所有强引用,它们将立即被释放。这与旧的 MRC 问题不同,因为草率使用
autorelease可能会导致内存释放延迟到当前运行循环结束。如果您仍然遇到问题,您可能需要向我们展示如何创建、添加和保存对图像及其图像视图的任何引用的代码 sn-p。但是,如果我删除图像视图并创建新视图,旧视图的释放会在我创建新视图之前发生。
标签: objective-c cocoa-touch memory-management automatic-ref-counting