我一直在寻找解决方案,我有点困惑。我需要在所有的UIViewControllers中定期运行一个任务。基本上我想检查我的数据库的内容,每隔10秒检查一次变量是否从0变为1.我读了NSTimer和Dispatch_time,但我不确定如果我从一个变量中继续运行查看花药。我怎样才能做到这一点?
我的问题的第二部分是如何将此任务传递给后台线程?假如用户锁定他/她的手机我希望应用仍然检查数据库UNTIL变量从0变为1.
我是应用编程和iOS架构的新手。如果有任何我可以阅读以帮助我完成此任务,请建议。
提前致谢。
答案 0 :(得分:1)
您是否考虑过运行Threads
?
当然人们会说初学者不应该接触线程,因为不小心会导致非常不可预测的错误等。 事情有时你真的必须使用它们,你的需要适合线程。
线程在程序的后台运行,与其余代码和其余线程分开。这意味着线程不会等待任何其他事情,只要你要求它们。
在此处详细了解Swift中的{{1}}:https://thatthinginswift.com/background-threads/
答案 1 :(得分:0)
这不是移动应用程序的正确方法,用于轮询数据库条目的更改。在您的代码的某处,此数据库条目正在更新。您可以使用更新数据库条目的NSNotification
来发布NSNotificationCenter
。注册收听该通知的所有观看者都将收到有关此更改的通知。
//for listening for notification
[[NSNotificationCenter defaultCenter] addObserver:self selector:@SELECTOR(methodWhichWillBeInvoked) name:@"yourname" object:nil];
//for posting notification
[[NSNotificationCenter defaultCenter] postNotifcationName:@"yourname" object:nil];
无论何时您确定,您都不需要观察NSNotification,您应该以下列方式取消订阅。
[[NSNotificationCenter defaultCenter] removeObserver:self];
发布NSNotification check here
观察NSNotification check here
取消订阅check here
另外一点,ios应用程序可以在后台运行,你可能会建议播放无声音频以保持应用程序运行,但你的应用程序将被appstore拒绝这样的行为。
希望他们帮助你。