我有一个带有各种控件的表单。这些控件之一允许用户通过点击控件后出现的模态视图来更改正在提交的表单的类别。当用户选择更改表单的类别时,表单需要根据新的类别重新显示控件。
除了从表单 View 中删除以前的控件之外,对于被丢弃的控件,我还有什么需要担心的吗?考虑表单实现的以下方法:
- (void)showControls
self.controls = [NSMutableArray array];
for(UIControl *control in self.dataSource.controls){
[self.controls addObject:control];
[self.view addSubview:control];
}
}
如果我多次调用此方法(因为用户更改了表单类别,如前所述),我假设它会导致各种 NSMutableArrays float 而没有任何引用它们的指针。这可以吗?我使用的是 ARC,它会自动收集那些“丢失”的数组吗?
Best Answer-推荐答案 strong>
ARC 不会“收集”任何东西。此外,您在那里所做的事情与使用 ARC 完全无关。您正在为 control 属性使用 setter,该属性的工作方式与 ARC 之前的相同。它将释放旧值并保留新值。所以,你不应该对“丢失”的数组有任何问题,除非你用 self.controls 做了一些奇怪的事情,而不是你所展示的。
关于objective-c - 使用 ARC 时重新分配属性,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/9454763/
|