Ios 当应用程序在后台运行时,如何从设置包更新NSUserDefaults?

Ios 当应用程序在后台运行时,如何从设置包更新NSUserDefaults?,ios,objective-c,nsuserdefaults,uilocalnotification,settings.bundle,Ios,Objective C,Nsuserdefaults,Uilocalnotification,Settings.bundle,在设置包中,我有一个多选选项。因此,当我选择某个内容时,应用程序应该接收新值并使用它启动UILocalNotification。我尝试的只是在打开应用程序时更新值 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [[NSNotificationCenter defaultCenter] addObserv

在设置包中,我有一个多选选项。因此,当我选择某个内容时,应用程序应该接收新值并使用它启动UILocalNotification。我尝试的只是在打开应用程序时更新值

  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions


{  
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(defaultsChanged:)
                                                 name:NSUserDefaultsDidChangeNotification
                                               object:nil];

}
- (void)applicationDidEnterBackground:(UIApplication *)application
{

  [[NSUserDefaults standardUserDefaults]synchronize];
}

如果你不是真正在后台运行,而是挂起,那么你的应用程序在被用户唤醒或重新启动之前不会收到任何事件。如果您在后台运行,则需要轮询设置包中的更改,并做出相应的反应。

您的问题不清楚。如果在后台运行,应用程序如何接收新值?为什么您需要defaultsChanged:selector?请澄清您在后台运行的意思,它可能意味着几件事,比如播放音频、提供GPS或VOIP,或者执行即将到期的任务。您可能还表示我正在使用选择器查看用户是否更改了设置包中的任何选项。暂停是我的意思。我猜您正在启动时轮询NSUserDefault,并在此阶段应用设置。当用户在settings.app中更改设置时,如果检测到这些更改并将其应用于NSUserDefaults,则在下次启动之前,您的应用程序不会知道这些更改。好的,谢谢。因此,无法在下次发布时让应用程序知道。