objective-c - 使用 ARC 时重新分配属性

标签 objective-c ios cocoa-touch memory-management automatic-ref-counting

我有一个带有各种控件的表单。其中一个控件允许用户通过点击控件后出现的模态视图来更改正在提交的表单的类别。当用户选择更改表单类别时,表单需要根据新类别重新显示控件。

除了从表单 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/

相关文章:

ios - UIButton 图像没有改变

ios - xcode9中grpc报错GPR_UNREACHABLE_COD如何修正

iphone - 确定 UIView 的可用区域

ios - 如何根据内容改变桌面 View 高度

iOS StoreKit 交易标识符与收据不匹配

iphone - 为什么在iOS中可以使用object但是NSLog(@"%@",object)会导致bad memory access?

ios - 尝试将 CIImage 与从视频文件帧获得的纹理一起使用时,CIImage 为空白

ios - 在不引用 iOS 7 的情况下查找 UIAlertView

iphone - 为什么我不能设置按钮的阴影颜色?

ios AVFoundation 点击​​聚焦