使用ARC时重新分配属性

时间:2012-02-26 16:23:11

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

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

除了从表单视图中删除以前的控件之外,还有什么我需要担心的是被丢弃的控件吗?请考虑表单实现的以下方法:

- (void)showControls
    self.controls = [NSMutableArray array];

    for(UIControl *control in self.dataSource.controls){
        [self.controls addObject:control];
        [self.view addSubview:control];
    }
}

如果我多次调用此方法(因为用户更改了表单类别,如前所述),我认为它导致各种NSMutableArrays浮动而没有任何引用它们的指针。这样可以吗?我正在使用ARC,它会自动收集那些“丢失”的数组吗?

1 个答案:

答案 0 :(得分:4)

ARC没有“收集”任何东西。此外,你在那里做的事与使用ARC相当无关。您正在使用control属性的setter,它将以与ARC之前相同的方式工作。它将释放旧值并保留新值。所以,你不应该对数组“丢失”有任何问题,除非你使用self.controls做了一些奇怪的事情,而不是你所展示的。