如何使用ARC发布iOS屏幕上的对象?

时间:2012-07-31 17:07:12

标签: ios automatic-ref-counting

我将一些UIButtons移出屏幕,当我浏览子视图时,我仍然可以枚举它们。我想“释放”它们以使脚本运行得更快,但我如何在带有ARC的iOS上执行此操作?

4 个答案:

答案 0 :(得分:1)

当你在ARC下时,你需要做的就是“释放”一个对象,所有对它的引用都设置为nil

在你的情况下,除非你将所有这些UIButton保存在一个数组或某个地方,否则你只需要在屏幕外的超级视图中删除它们。当然,如果你再次需要它们,你将不得不重新添加它们

答案 1 :(得分:0)

使用ARC,您无法调用dealloc,release或retain,尽管您仍然可以保留和释放CoreFoundation对象。遗憾的是,使用ARC时无法手动释放对象。您是否尝试过弱或强引用的对象?

答案 2 :(得分:0)

我怀疑你会看到任何性能影响,除非你有很多按钮,或者你的枚举块每个按钮花费大量时间。

无论如何,您可以使用...

从其超级视图中删除任何元素
[view removeFromSuperView];

答案 3 :(得分:0)

感谢您的所有回复,但我的问题的正确答案(在发布实例对象时。我应该在问题中提出这个问题...对不起家伙)如下:

for (int x =0; x<[toBeDeletedArray count]; x++) {
     UIButton* __weak butt = (UIButton*)[toBeDeletedArray objectAtIndex:x];
     [butt removeFromSuperview];
     butt = nil;
     }

关键是将其声明为“__weak”,然后将其设置为nil。

感谢您的所有灵感!