我正在处理的应用程序在传播设置时出现问题,但一旦关闭并重新打开,它似乎工作正常.这是一个闹钟应用程序,因此它不会受益于多任务处理.由于我使用NSUserDefaults保存相关设置,因此我关闭了多任务处理:
@implementation MyAppDelegate
- (void) applicationDidEnterBackground:(UIApplication *)application {
exit(0);
}
...
@end
Run Code Online (Sandbox Code Playgroud)
因此,此时用户必须手动关闭并重新打开应用程序.是否有可以发送的命令使应用程序关闭并重新打开(自动)?如果在从屏幕上删除设置视图控制器时更改了某些设置,我希望应用关闭并重新打开.
您应该解决问题的根源,而不是强制您的应用程序在退出时关闭,这是一种糟糕的用户体验.
如果您在应用程序中设置了拒绝传播的设置问题,请尝试使用
[[NSUserDefaults standardUserDefaults] synchronize];
Run Code Online (Sandbox Code Playgroud)
将设置刷新到磁盘.
如果您遇到的问题是在应用程序处于后台时在"设置"应用程序中更改了设置,请在应用程序中添加一个侦听这些设置中的更改的观察者:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleChangeInUserSettings:) name:NSUserDefaultsDidChangeNotification object:nil];
Run Code Online (Sandbox Code Playgroud)
如果某些内容发生了变化,当您的应用程序返回到前台时将触发该操作.在此方法中,更新您的用户界面或应用程序的其他方面,需要使用更新的设置进行调整.
不,您无法强制应用重启自己.exit()在代码中使用会违反Apple HIG.
为了达到你想要的效果,我建议在更改设置时向用户显示警告,然后建议设置将在下次启动时生效.
您应该通过将UIApplicationExitsOnSuspend添加到info.plist并将其设置为true来禁用多任务处理.