iOS应用程序的后台更新问题

iOS应用程序的后台更新问题,ios,multithreading,Ios,Multithreading,我正在尝试进行一个“自动更新”过程,让用户在应用程序醒着时每隔X分钟保持更新。我所做的是每X分钟打一次后台电话,询问服务器是否需要更新 问题是,当我发出一个调用,服务器返回YES时,我必须更新两件事:我的本地数据库和用户界面(因为界面上可能也有更改) 我现在遇到的是一个线程问题。如果我在应用程序更新时没有绘制任何图形,我就没有问题,但当我绘制时,应用程序崩溃 有什么办法可以控制线程问题吗?我假设您的数据库使用的是CoreData。您需要确保对托管对象上下文所做的任何更新都发生在创建该上下文的线程

我正在尝试进行一个“自动更新”过程,让用户在应用程序醒着时每隔X分钟保持更新。我所做的是每X分钟打一次后台电话,询问服务器是否需要更新

问题是,当我发出一个调用,服务器返回YES时,我必须更新两件事:我的本地数据库和用户界面(因为界面上可能也有更改)

我现在遇到的是一个线程问题。如果我在应用程序更新时没有绘制任何图形,我就没有问题,但当我绘制时,应用程序崩溃


有什么办法可以控制线程问题吗?

我假设您的数据库使用的是CoreData。您需要确保对托管对象上下文所做的任何更新都发生在创建该上下文的线程上(通常是主线程)


您还需要确保对用户界面所做的任何更新也发生在主线程上。

我假设您正在为数据库使用CoreData。您需要确保对托管对象上下文所做的任何更新都发生在创建该上下文的线程上(通常是主线程)


您还需要确保对用户界面所做的任何更新也发生在主线程上。

可以尝试在后台线程上运行代码。一个简单的方法是使用preformSelectorOnBackgroundThread方法…

可以尝试在后台线程上运行代码。一个简单的方法是preformSelectorOnBackgroundThread方法…

您能展示一些代码吗?具体来说,举一个例子,说明当“服务器返回YES”时您正在做什么,这会很有帮助。还包括调用代码的线程。好的,当服务器返回YES时,我就是这么做的。我调用了一个后台方法来实现这些功能:1)清除数据库2)更新数据库3)保存新的json 4)更新视图当我尝试调试时,问题出现在尝试执行2)时,你能显示一些代码吗?具体来说,举一个例子,说明当“服务器返回YES”时您正在做什么,这会很有帮助。还包括调用代码的线程。好的,当服务器返回YES时,我就是这么做的。我调用了一个后台方法来实现这些功能:1)清除数据库2)更新数据库3)保存新的json 4)更新视图当我尝试调试时,问题出现在尝试执行2)是的,你假设是对的。我的主要问题是清除所有内容,然后更新所有内容。安排好之后,我在后台线程上进行了所有更新,这也让我遇到了一些问题,通过在主线程上进行更新解决了这些问题。谢谢你的建议!是的,你认为是对的。我的主要问题是清除所有内容,然后更新所有内容。安排好之后,我在后台线程上进行了所有更新,这也让我遇到了一些问题,通过在主线程上进行更新解决了这些问题。谢谢你的建议!