appDelegate のapplicationDidReceiveMemoryWarning
メソッドを使用して、高リソース オブジェクトをいくつかダンプしています。アプリが再起動したら、それらのオブジェクトだけをリロードしてユーザーを最後のページに戻そうとするのではなく、アプリを一番上から再起動したいと思います (メイン ページから、アプリは 1 レベルの深さまでしか移動しないため、これは私たちにとって完全に受け入れられます)。
これが私のわずかな試みですが、それはひどい失敗でした。近づいたのですが、実際のメモリ ダンプとアプリのクラッシュにつながるいくつかの問題が発生しました。
- (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];
}
}
このようなことをするための最良のアプローチは何ですか? 私が知らない簡単なトリックはありますか?
ありがとうございました!