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