0

내 응용 프로그램에 약 ViewControllers이 있습니다. presentModalViewController을 사용하여 ViewController를 여는 중입니다. 사용자가 배경을 입력하고 전경에 올 때마다 첫 번째 ViewController를 표시하려고합니다. 사용자가 8 번째 ViewController에서 배경을 입력하고 응용 프로그램을 다시 열면 첫 번째 View Controller를 표시해야합니다.applicationWillEnterForeground의 메모리 누수가

나는 applicationWillEnterForeground

- (void)applicationWillEnterForeground:(UIApplication *)application 
{ 
    self.HomeScreenViewController = [[HomeScreenViewController alloc] initWithNibName:@"HomeScreenViewController" bundle:nil]; 
    self.window.rootViewController = _homeScreenViewController; 
    [self.window makeKeyAndVisible]; 
} 

에 다음 코드를 사용하고 있으며 메모리 누수를 보이고있다. 분명히 HomeCtrl을 다시 초기화하고 있기 때문에 메모리 누수가 표시되지만 분명히 해결할 방법을 모르겠습니다. 아무도 나를 도울 수 있습니까 ?? ViewControllers가 오른쪽 또는 왼쪽에서 푸시되었으므로 UINavigationController을 사용하지 않습니다.

+0

것은 당신이 ARC를 사용하고 있습니까? – Kreiri

+0

아니요. 사용하고 있지 않습니다. – Cyril

답변

3

변경 :

self.HomeScreenViewController = [[HomeScreenViewController alloc] ....]; 

_HomeScreenViewController = [[HomeScreenViewController alloc] ....]; 

에 또는 당신이 추적 코드 같은 작업을 수행 할 수 있습니다

HomeScreenViewController *tempHSVC = [[HomeScreenViewController alloc] ....]; 
self.HomeScreenViewController = tempHSVC; 
[tempHSVC release]; 
self.window.rootViewController = self.HomeScreenViewController //or use just _homeScreenViewController; 
[self.window makeKeyAndVisible]; 

그리고 objc의 메모리 관리에 대한 몇 가지 기사를 읽어 보시기 바랍니다. 내가 HomeScreenViewController 속성을 가정

1

는 당신을 위해 개체를 유지합니다 유지 속성에 대한

@property (nonatomic, retain) HomeScreenViewController *HomeScreenViewController 

기본 setter 메소드로 선언된다. ALLOC 초기화에 오토 릴리즈를 추가

self.HomeScreenViewController = [[[HomeScreenViewController alloc] initWithNibName:@"HomeScreenViewController" bundle:nil] autorelease]; 

은 참조 : Advanced Memory Management Programming Guide

+0

답이 모두 맞습니다. 고맙습니다. – Cyril