Переназначение свойств при использовании ARC - PullRequest
2 голосов
/ 26 февраля 2012

У меня есть форма с различными элементами управления. Один из этих элементов управления позволяет пользователю изменять категорию отправляемой формы через модальное представление, которое появляется после нажатия на элемент управления. Когда пользователь делает выбор, чтобы изменить категорию формы, форма должна повторно отобразить элементы управления на основе новой категории.

Кроме удаления предыдущих элементов управления из вида формы, есть ли что-то, о чем мне нужно беспокоиться в отношении элементов управления, которые отбрасываются? Рассмотрим следующий метод, который реализует форма:

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

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

Если я вызову этот метод несколько раз (поскольку пользователь изменяет категорию формы, как описано ранее), я предполагаю, что это приводит к тому, что различные NSMutableArrays перемещаются без каких-либо указателей, которые ссылаются на них. Это нормально делать? Я использую ARC, поэтому он будет автоматически собирать эти "потерянные" массивы?

1 Ответ

4 голосов
/ 26 февраля 2012

ARC ничего не "собирает".Кроме того, то, что вы делаете там, не имеет значения, что ARC используется.Вы используете сеттер для свойства control, которое будет работать так же, как и pre-ARC.Это освободит старое значение и сохранит новое значение.Таким образом, у вас не должно быть проблем с тем, что массивы будут «потеряны», если вы не делаете странные вещи с self.controls, отличным от того, что вы показали.

...