Как выгрузить UIViewController из UIScrollView? - PullRequest
2 голосов
/ 29 апреля 2011

Я использую почти такой же код для загрузки моего UIViewController (называемого LessonScrollView) в UIScrollView.Метод вызывается, когда в методе scrollViewDidScroll

- (void)loadScrollViewWithPage:(int)page {

if (page < 0)
    return;
if (page >= numPages)
    return;

LessonScrollView *controller = [imageViewControllers objectAtIndex:page];
if ((NSNull *)controller == [NSNull null]) {
    controller = [[LessonScrollView alloc] initWithPage:page forLesson:[self title]];
    [imageViewControllers replaceObjectAtIndex:page withObject:controller];
    [controller release];
}

if (controller.view.superview == nil) {
    CGRect frame = CGRectMake(0, 80, 320, 285);
    frame.origin.x = frame.size.width * page;
    frame.origin.y = 0;
    controller.view.frame = frame;
    [scrollView addSubview:controller.view];
}

}

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

Мой вопрос: как бы я освободил объект LessonScrollView?Я бы назвал метод, скажем,

- (void)unloadScrollViewWithPage:(int)page 

в scrollViewDidScroll, и страница будет текущей страницей - 1.

Спасибо за любую помощь, которую вы можете предложить.

1 Ответ

1 голос
/ 29 апреля 2011

Попробуйте это:

[controller.view removeFromSuperview];//to release the controller's view
[imageViewControllers replaceOjectAtIndex:page withObject:[NSNull null]];//to release the actual controller which should lead to it being dealocated
...