2010-11-14 66 views
0

我正在使用設置應用程序來存儲應用程序設置。我也userdefaults存儲內部應用程序設置(這是不公開的設置應用程序)。例如,我使用用戶默認值來存儲設置應用中未公開的最後一個標籤欄索引。NSUserDefaultsDidChangeNotification和多任務處理問題

我正在訂閱NSUserDefaultsDidChangeNotification來偵聽設置中的任何更改,而我的應用程序在後臺並且工作正常。

問題是,當我更新我的應用程序內的用戶默認值(對於我的內部應用程序設置參數),這也觸發NSUserDefaultsDidChangeNotification,我不想。

  1. 是否可以在設置應用程序中而不是從應用程序中聽到設置中的更改?
  2. 僅當應用程序處於後臺時纔可以收聽通知嗎?我試圖僅在applicationWillResignActive中訂閱通知(就在進入後臺之前)(並且對於註冊而言工作正常),但是一旦應用程序再次處於活動狀態,我就找不到註銷的方法(applicationDidMakeActive似乎不是正確的回調後通知被傳遞)。
  3. 或者還有其他一些簡單的方法來實現這一目標嗎?

回答

0

applicationDidMakeActive?你必須是applicationDidBecomeActive。

您可能會考慮實施applicationDidEnterBackground和applicationWillEnterForeground,而不是applicationWillResignActive和applicationDidBecomeActive。

當應用程序開始和結束時,也會調用「活動」方法,這意味着一旦開始時您將停止收聽通知(您實際上並未聽取此通知),並且如果您實現了applicationDidBecomeActive,一旦你的應用程序結束,就收聽通知(無所事事)。