2010-11-14 64 views
0

我正在使用设置应用程序来存储应用程序设置。我也userdefaults存储内部应用程序设置(这是不公开的设置应用程序)。例如,我使用用户默认值来存储设置应用中未公开的最后一个标签栏索引。NSUserDefaultsDidChangeNotification和多任务处理问题

我正在订阅NSUserDefaultsDidChangeNotification来侦听设置中的任何更改,而我的应用程序在后台并且工作正常。

问题是,当我更新我的应用程序内的用户默认值(对于我的内部应用程序设置参数),这也触发NSUserDefaultsDidChangeNotification,我不想。

  1. 是否可以在设置应用程序中而不是从应用程序中听到设置中的更改?
  2. 仅当应用程序处于后台时才可以收听通知吗?我试图仅在applicationWillResignActive中订阅通知(就在进入后台之前)(并且对于注册而言工作正常),但是一旦应用程序再次处于活动状态,我就找不到注销的方法(applicationDidMakeActive似乎不是正确的回调后通知被传递)。
  3. 或者还有其他一些简单的方法来实现这一目标吗?

回答

0

applicationDidMakeActive?你必须是applicationDidBecomeActive。

您可能会考虑实施applicationDidEnterBackground和applicationWillEnterForeground,而不是applicationWillResignActive和applicationDidBecomeActive。

当应用程序开始和结束时,也会调用“活动”方法,这意味着一旦开始时您将停止收听通知(您实际上并未听取此通知),并且如果您实现了applicationDidBecomeActive,一旦你的应用程序结束,就收听通知(无所事事)。