2013-11-14 3 views
-1

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

- (void)invoke{ 
    [[self subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)]; 
    for(NSDictionary *dict in self.list){ 
     MySubview *subView = [[MySubview alloc] initWithFrame:self.view.frame]; 
     [self addSubview:subView]; 
    } 
} 

Таким образом, результатом является то, что каждый раз, когда я вызываю его, увеличивается памяти по всем 4Мбам.
Тогда как я могу исправить и оптимизировать свою память?

+1

Вы используете ARC? – stosha

+0

проверить, что все подзаголовки удалены до цикла – stosha

+0

Что такое 'MySubview'? Что он делает/содержит? – Wain

ответ

1

[someView removeFromSuperView] не то же самое, как someView = nil;

вы должны убедиться, что каждый зрения вы пытаетесь искоренить устанавливается в ноль. В противном случае они будут болтаться до тех пор, пока ARC не подумает, что пришло время их вычеркнуть (возможно, когда супервизор уничтожен) или вы вызываете на них release (для не ARC)

+0

Тогда как я могу удалить все подвид представления и установить их в nil? –

+0

см. Отредактированный ответ – Fr4ncis

+0

, как правило, родительский вид устанавливает его подпункты в nil. –

Смежные вопросы