我正在使用我的 appDelegate 的applicationDidReceiveMemoryWarning
方法来转储一些高资源对象。当应用程序重新启动时,而不是尝试仅重新加载这些对象并将用户返回到他的最后一页,我只想从顶部重新启动应用程序(从主页开始,应用程序只进入一级深度,所以这对我们来说是完全可以接受的)。
这是我微不足道的尝试,但它是一个可悲的失败。它接近了,但我最终引入了一些导致实际内存转储和应用程序崩溃的问题。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.viewController = [[SplashScreenViewController alloc] initWithNibName:@"SplashScreenViewController" bundle:nil];
UINavigationController *navcon = [[UINavigationController alloc] initWithRootViewController:self.viewController];
self.window.rootViewController = navcon;
[self.window makeKeyAndVisible];
return YES;
}
- (void)applicationDidEnterBackground:(UIApplication *)application
{
//For testing purposes only
self.lowMemoryWarning = TRUE;
NSLog(@"app did enter background");
}
- (void)applicationWillEnterForeground:(UIApplication *)application
{
NSLog(@"app will enter foreground");
if (self.lowMemoryWarning) {
NSLog(@"recovering from low memory warning");
self.window.rootViewController = nil;
UINavigationController *navcon = [[UINavigationController alloc] initWithRootViewController:self.viewController];
self.window.rootViewController = navcon;
[self.window makeKeyAndVisible];
}
}
做这样的事情的最佳方法是什么?是否有一个我不知道的简单技巧?
谢谢!