Управление памятью в циклах - PullRequest
1 голос
/ 09 марта 2011

A UINavigationController нажимает UIViewController при нажатии на запись в таблице.Появляющийся вид создает много циклов UILabels следующим образом:

for(i=0, i < 50, i++)
{
    pointer = [[UILabel alloc] initWithFram:CGRectMake(i, 5, 5, 5)];
    pointer.text = ...;
    ...
    [scrollView addSubView:pointer];
    [pointer release];
}

Как я могу освободить всю память, когда представление исчезает?Разве это не проблема, что указатель «указатель» указывает только на последний UILabel?а к другому UILabels больше нет указателя?
Поскольку представления загружаются очень медленно после загрузки некоторых из них до этого.

Ответы [ 2 ]

2 голосов
/ 09 марта 2011

Вы должны сделать указатель UILabel * локальной переменной в этом цикле. Чтобы было ясно, что вам не нужен указатель где-то еще, потому что он вам не нужен.

Вы сохраняете (выделяете) их, scrollView сохраняет их, вы отпускаете их. И когда скролл-вид выйдет, он выпустит UILabels. Все они.

Все хорошо.

1 голос
/ 09 марта 2011

Вам не нужно освобождать все UILabels вручную.Вы уже выпускаете их в цикле.Поэтому для правильной обработки памяти просто убедитесь, что scrollView выпущен правильно.

...