2011-08-10 8 views
1

로테이션에서 상당히 복잡한 TabBarController 앱에서 메모리 누수를 디버그하려고합니다. 그래서 AppDelegate, FirstViewController 및 SecondViewController가있는 아주 간단한 해골 앱을 만들었습니다. 각각 iOS 프로그래밍, The Big Nerd Ranch Guide 2nd Ed의 지시에 따라 뷰와 라벨이있는 별도의 펜촉으로 연결되었습니다. 탭이 작동하고 뷰가 표시됩니다.SimpleTabBarController 누수 메모리

의 CALayer UIKit의 UIView _createLayerWithFrame 있는 UIImageView UIClassicController _setupWindow

편집 : : 음 FWIW 나는 회전을 활성화하면 나는 여전히 회전에 아이 패드 장치에 대한 누수를 얻을. 나는 엑스 코드 3.26과 iOS4.3 템플릿을 사용 :

보기 -> 아이 패드 -> NO CODE 추가되지 ->이 템플릿 코드와 함께 회전에 아이 패드 NO 누출에 대한 테스트 :

// Override to allow orientations other than the default portrait orientation. 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    return YES; 
} 

보기 - -> 아이폰 -> 아이 패드 SAME 누출에 대한 테스트가 보기 - -> 아이폰 -> 약간 다른 코드를 추가 -> 프로젝트에 상기에서 똑같은 코드를 추가> 아이 패드 SAME 누출에 대한 테스트

// Override to allow orientations other than the default portrait orientation. 
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)x { 
    //return YES; 
    return (x== UIInterfaceOrientationPortrait) || UIInterfaceOrientationIsLandscape(x); 
} 

그래서 iPhone4를 테스트 할 때 누출이 있는지 기다려 볼 것입니다. 이는 한 줄의 코드를 추가해야하는 매우 재현 가능한 오류입니다. 혼란스러워.

답변

-2

[tbController setViewControllers:viewControllers]; 다음에 배열 viewControllers[viewControllers release];과 함께 출시해야합니다.

+0

당신이 옳지 않습니다. View viewController는 자동 렌더링 된 객체입니다. 코드를 계속 살펴보십시오. –

+0

그가 코드에 사용하는 단어는 오도 된 것입니다. viewControllers는 뷰가 아닌 배열입니다. 그는 말합니다 : NSArray * viewControllers = [NSArray arrayWithObjects : vc1, vc2, nil]; –

+0

아아, 자기 배열이 자동으로 등록 된 것 같습니다. –