iPhone SDK Управление памятью для приложения Multiview - PullRequest
1 голос
/ 02 сентября 2010

У меня есть приложение, которое программно создает метки и текстовые поля на основе содержимого текстового файла. Каждый раз, когда загружается контроллер представления, он создает текстовые поля и метки, которые каждый раз отличаются. Моя проблема в том, что мне нужно очистить метки и текстовые поля, не освобождая контроллер представления, поскольку мне нужно отслеживать контроллер представления. Я пробовал self.viewController = nil, но я почти уверен, что это приводит к утечке памяти. Есть ли способ удалить все подпредставления представления?

Ответы [ 2 ]

3 голосов
/ 03 сентября 2010

Что хотел сказать Грег, так это:

for (UIView *subview in self.view.subviews) {
    [subview removeFromSuperview];
}

Это может работать не так, как вы ожидаете, поскольку Objective C не нравится, когда вы модифицируете массив, когда вы итерируете его в цикле for. Более безопасный выбор будет следующим:

while ([self.view.subviews count] > 0) { 
    [[self.view.subviews lastObject] removeFromSuperview]; 
}
0 голосов
/ 03 сентября 2010

Если у вас есть представление с именем view, вы сможете удалить все подпредставления из представления, используя этот код:

for (UIView *subview in view) {
    [subview removeFromSuperview];
}
...