我的申请表中约有9 ViewControllers
。我正在使用presentModalViewController
打开ViewControllers。我希望每次用户进入后台并显示前景时显示第一个ViewController。如果用户在第8个ViewController中输入背景并再次打开应用程序,我需要显示第一个视图控制器。
我在applicationWillEnterForeground
- (void)applicationWillEnterForeground:(UIApplication *)application
{
self.HomeScreenViewController = [[HomeScreenViewController alloc] initWithNibName:@"HomeScreenViewController" bundle:nil];
self.window.rootViewController = _homeScreenViewController;
[self.window makeKeyAndVisible];
}
它显示内存泄漏。显然它会显示内存泄漏,因为我再次初始化HomeCtrl,但我不知道如何解决它。谁能帮我 ??
我没有使用UINavigationController
,因为ViewControllers是从右侧或左侧推动的。
答案 0 :(得分: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中阅读一些关于内存管理的文章。
答案 1 :(得分:1)
我假设HomeScreenViewController属性声明为
@property (nonatomic, retain) HomeScreenViewController *HomeScreenViewController
保留属性的默认setter方法将为您保留对象。添加autorelease到alloc init:
self.HomeScreenViewController = [[[HomeScreenViewController alloc] initWithNibName:@"HomeScreenViewController" bundle:nil] autorelease];