我使用几乎相同的代码将我的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];
}
}
在某些情况下,我有相当多的页面,我相信它会保留在内存中,直到负责scrollView的UIViewController被释放(或发生内存警告)。
我的问题是,如何发布LessonScrollView对象。我会称之为名为
的方法- (void)unloadScrollViewWithPage:(int)page
在scrollViewDidScroll和页面中的将是当前页面 - 1.
感谢您提供的任何帮助。
答案 0 :(得分:1)
试试这个:
[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