2011-04-29 3 views
2

UIScrollView에 내 UIViewController (LessonScrollView)를로드하는 데 거의 동일한 코드를 사용하고 있습니다. scrollViewDidScroll 방법UIScrollView에서 UIViewController를 언로드하려면 어떻게해야합니까?

- (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 객체를 어떻게 릴리스할까요? 나는라는 메소드를 호출 scrollViewDidScroll에

- (void)unloadScrollViewWithPage:(int)page 

을 말하고 페이지는 현재 페이지 될 것이다 - 당신이 제공 할 수있는 어떤 도움 1.

감사합니다.

답변

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 
+0

덕분에 작동하는지! 정말 간단합니다. – sburnstone

관련 문제