2013-12-13 4 views
1

UIPageViewController 사용할 때 큰 메모리 누수 문제가 있습니다. 나는보기가 있고 나는 그것을 스크롤한다. 나는 그 기억이 매우 빨리 자랍니다. 메모리 누수 iPhone 및 UIPageViewController

나는 그게 문제라고 생각합니다 :

- (ViewControllerEvent *)viewControllerAtIndex:(NSUInteger)index { 

    ViewControllerEvent *childViewController = [[UIStoryboard storyboardWithName:[self isIPad][email protected]"Main_iPad":@"Main_iPhone" bundle:nil] instantiateViewControllerWithIdentifier:@"ViewControllerEvent2"]; 

    childViewController.index = index; 
    childViewController.event = [self.events objectAtIndex:index]; 
    return childViewController; 

} 

내 클래스 : 내 호출기 약 100 뷰를 사용

@interface ViewControllerEvent : UIViewController 

@property (assign, nonatomic) NSDictionary *event; 
@property (assign, nonatomic) NSInteger index; 

@property (weak, nonatomic) IBOutlet UIImageView *header; 
@property (weak, nonatomic) IBOutlet UIScrollView *_scrollViewDesc; 

@property (retain, nonatomic) IBOutlet UITextView *descLabel; 
@property (retain, nonatomic) IBOutlet UIView *whiteBackground; 
@property (weak, nonatomic) IBOutlet UIImageView *bootomMapImage; 

@end 

.

+0

이것은 실제로 인스턴스 메서드입니까? 그것은 클래스 메소드가 아니어야합니까? – bilobatum

+0

내 질문을 편집했습니다. – Unmerciful

+0

클래스 메서드를 사용하여 메모리 사용을 줄일 수 있습니다. 아래 내 대답을 참조하십시오. 인스턴스 메소드에는 페이지 뷰 컨트롤러에 대해 판매하려고하는 뷰 컨트롤러의 인스턴스가 필요합니다. (UIPageViewController *) pageViewController viewControllerAfterViewController : (UIViewController에 *)의 ViewController { NSUInteger -이 같은 : (UIViewController에 *) pageViewController – bilobatum

답변

0

메모리 누출은 일반적으로 약한 참조가 있어야하는 일부 개체 (예 : 대리자)에 대한 강력한 참조를 유지하는 것과 관련이 있습니다. 각 자식 뷰 컨트롤러에 대한 참조를 유지하고 있기 때문에 메모리 크기가 커집니다.

0

페이지 뷰 컨트롤러의보기 컨트롤러를 판매하는 인스턴스 메서드를 사용하지 마십시오. 대신 클래스 메소드를 사용하십시오.

+ (ViewControllerEvent *)viewControllerAtIndex:(NSUInteger)index 
{ 
    … 

    return childViewController; 
}