【问题标题】:Dealing with multi threading in Objective c在 Objective c 中处理多线程
【发布时间】:2017-04-14 13:36:04
【问题描述】:

在我的项目中,我使用 NSOperationQueues 在核心数据中执行不同的任务。在此,一些操作在 performBlock 中执行,而另一些在 PerformBlockAndWait 中执行,在后台队列或 mainQueue 中调用。在此有主上下文和后台上下文来处理不同的线程。当我从我的应用程序中注销时,我想清除所有存储的详细信息在核心数据中并停止当前正在运行的所有线程。

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

【问题讨论】:

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

标签: ios objective-c iphone core-data nspersistentstore


【解决方案1】:

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

func applicationWillTerminate(application: UIApplication) {

    print("applicatoinWillTerminate")

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

【讨论】:

    猜你喜欢
    • 2019-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多