Я прочитал все основы распределения / освобождения памяти iOS, но ничего не могу найти по следующему:
Я создал небольшое приложение, которое в значительной степени перечисляет сетку кнопок UIB и нажимая на любую из них, добавляет UIScrollView к текущему представлению контроллера (и добавляет кучу UIView и UIWebView внутри и т. Д.).
При добавлении UIScrollVIew я также добавляю UIButton, который возвращает меня к «домашней сетке», а затем удаляет UIScrollView из суперпредставления.
Я освобождаю все вещи, которые я сохраняю / выделяю и т. Д., И когда я проверяю приложение с помощью инструментов, оно не показывает утечки памяти.
Но каждый раз, когда я нажимаю на любой из объектов UIButton, я выделяю больше памяти (в соответствии с инструментами), и она продолжает расти - и «повторное открытие» того же вида UIScrollView с помощью кнопки всегда добавляет больше памяти.
Если я имитирую предупреждение памяти в симуляторе, оно освобождает часть памяти, и я могу затем продолжать его наращивать.
Итак, вот мой вопрос: стоит ли мне пытаться как-то отменить это вручную? И если да, то где я должен это делать? Я довольно новичок в Obj-C, поэтому я думаю, что я охватил большинство основ, но более сложные темы все еще требуют некоторой помощи.
Создание сетки:
UIScrollView *grid = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)];
[[self view] addSubview:grid];
[grid release];
Добавление кнопок (в цикле for):
UIButton *slotItem = [[UIButton alloc] initWithFrame:CGRectMake(((float) slotWidth * j), ((float) slotHeight * i), (float) slotWidth, (float)slotHeight)];
[grid addSubview:slotItem];
UIWebView *buttonWebThumb = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, slotWidth, slotHeight)];
[buttonWebThumb setBackgroundColor:[UIColor clearColor]];
[buttonWebThumb setOpaque:NO];
[buttonWebThumb loadHTMLString:[NSString stringWithFormat:@"%@ %@ %@", htmlTop, [[row objectAtIndex:j] objectAtIndex:1], htmlBottom] baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]];
buttonWebThumb.scalesPageToFit = YES;
[slotItem addSubview:buttonWebThumb];
buttonWebThumb.userInteractionEnabled = NO;
buttonWebThumb.exclusiveTouch = NO;
[buttonWebThumb release];
[slotItem addTarget:self action:@selector(showPages:) forControlEvents:UIControlEventTouchUpInside];
[slotItem release];
Метод showPages затем создает другой UIScrollView и добавляет туда 1-10 отдельных UIWebView и добавляет кнопку «Закрыть» в новый UIScrollView.