2012-02-27 3 views
3

Appleのドキュメントでは、アプリがバックグラウンドモードに入っているときにイメージのような重いデータを解放することを推奨しています。
UIViewsと他のデータから画像を解放するには?
UIViewsからの画像をすべてviewControllerから解放する方法は正しいですか?
applicationWillResignActiveメッセージが届いたらデータを復元する方法は?

誰かが良い例やリンクを持っている場合は、表示してください。アプリがバックグラウンドモードに入ったときにグラフィックスを解放します

+4

なぜ非常に多くのダウンボックスがありますか? OK、それはあいまいな質問ですが、実際には良いことです。これには良い答えがあることが実際にはうれしいです(初心者には便利です)。 –

答えて

1

アプリデリゲートに2つの方法

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
    [[NSNotificationCenter defaultCenter] postNotificationName:NOTIFICATION_APP_BACKGROUND object:nil]; 
} 

- (void)applicationWillEnterForeground:(UIApplication *)application 
{ 
    [[NSNotificationCenter defaultCenter] postNotificationName:NOTIFICATION_APP_BACKGROUND object:nil]; 
} 

を追加する方法とBaseViewControllerを行います

- (id)init 
{ 
    self = [super init]; 
    if (self) { 
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appWillForeground) name:NOTIFICATION_APP_FOREGROUND object:nil]; 
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appDidBackground) name:NOTIFICATION_APP_BACKGROUND object:nil]; 
    } 

    return self; 
} 


- (void)appDidBackground { 
} 

- (void)appWillForeground { 

} 
- (void)dealloc { 
    [[NSNotificationCenter defaultCenter] removeObserver:self]; 
    [super dealloc]; 
} 

サブクラスBaseViewControllerからすべてのビューコントローラ。 appDidBackgroundメソッドでは、不要なデータをappWillForegroundで解放する必要があります。復元するには

+0

1.ある人が '[UIImage imagenamed:@" image.png "]'を使うとメモリからイメージを解放しないと言った人もいます。 2.データを保存して復元する方法。 NSUserDefaultsを使用しますか? coreDataを使用すると簡単です。しかし、nsarrayを保存する方法は、nsuserdefaultsやplistファイルに保存することができます。正しい方法は何ですか? – rowwingman

+0

1. [UIImage imageNamed]はすべての画像をキャッシュします。それはメモリ警告で解放されるかもしれません。 2.たくさんのデータを保存するには、いくつかのデータのためにユーザのデータを保存する必要があります - NSUserDefaultsは良い方法です。いくつかのカスタムオブジェクトで配列(NSUserDefaults内)を保存する場合は、カスタムクラスごとにNSCodingプロトコルを実装する必要があります。 – NeverBe

+0

loadViewで追加されたUIViewを解放する方法。一部の人々は、viewDidUnloadを使う必要があると言っていますが、appはこのメソッドが起動しないバックグラウンドモードに入ります。 – rowwingman

関連する問題