Ios 在Objective c中处理多线程

Ios 在Objective c中处理多线程,ios,objective-c,iphone,core-data,nspersistentstore,Ios,Objective C,Iphone,Core Data,Nspersistentstore,在我的项目中,我使用了NSOperationQueues在核心数据中执行不同的任务。在这种情况下,一些操作在performBlock中执行,另一些操作在performBlock和Wait中执行,后者在后台队列或mainQueue中调用。在这种情况下,主上下文和后台上下文用于处理不同的线程。当iam从我的应用程序注销时,我希望清除存储在核心数据中的所有详细信息,并停止当前所有线程跑步 简而言之:从应用程序注销时,我需要清除coredata中存储的所有数据,然后停止所有后台线程的运行。我如何才能做到

在我的项目中,我使用了NSOperationQueues在核心数据中执行不同的任务。在这种情况下,一些操作在performBlock中执行,另一些操作在performBlock和Wait中执行,后者在后台队列或mainQueue中调用。在这种情况下,主上下文和后台上下文用于处理不同的线程。当iam从我的应用程序注销时,我希望清除存储在核心数据中的所有详细信息,并停止当前所有线程跑步


简而言之:从应用程序注销时,我需要清除coredata中存储的所有数据,然后停止所有后台线程的运行。我如何才能做到这一点?

使用应用程序将终止方法来完成您的任务。它将在应用程序即将终止时运行

func applicationWillTerminate(application: UIApplication) {

    print("applicatoinWillTerminate")

    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}

您的问题是什么?从应用程序注销时,我需要清除coredata中存储的所有数据,然后停止所有后台线程的运行。如果([operationQueue operationCount]>0){[operationQueue cancelAllOperations];}这将操作的isCancelled属性设置为YES。调用API时,我正在创建此operationQueues,然后API结果存储在核心数据中。因此,我应该在哪里调用cancelAllOperations。NSOperationQueue类调节一组NSOperation对象的执行。将操作添加到队列后,操作将保留在该队列中,直到显式取消或完成其任务。如果您认为在执行注销时操作将继续进行,那么只需从注销函数调用一个方法即可。