1

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

4

4 回答 4

1

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

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

于 2012-07-31T17:11:56.687 回答
0

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

无论如何,你可以从它的超级视图中删除任何元素......

[view removeFromSuperView];
于 2012-07-31T17:14:05.067 回答
0

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

于 2012-07-31T17:11:19.737 回答
0

感谢您的所有回复,但我的问题的正确答案(在发布实例对象时。我应该把它放在问题中......对不起,伙计们)如下:

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

关键是声明它为“__weak”,然后可以设置为nil。

感谢您的所有灵感!

于 2012-08-03T08:34:01.837 回答