【问题标题】:Hang on NSManagedObjectContext's save:挂在 NSManagedObjectContext 的保存上:
【发布时间】:2012-02-20 04:01:27
【问题描述】:

由于某些原因,有时我的应用会挂起以下代码:

NSError *error;
if (![self.managedObjectContext save:&error]) {
     NSLog(@"Couldn't save: %@", [error localizedDescription]);
}

它并不总是挂起,只是有时。如果我在所有异常上中断,那么 Xcode 将在保存调用时中断,但如果我关闭断点,它将永远挂起,不会崩溃或任何事情。

有什么想法吗?

【问题讨论】:

  • 您有任何自定义托管对象验证吗?如果按下调试器暂停按钮,堆栈跟踪是什么?
  • 您是否从多个线程访问 MOC?
  • 就是这样!我在一个线程上创建了上下文,而不是从另一个线程访问它。现在我在另一个线程上创建了一个新的上下文,它似乎正在工作。谢谢!请将此作为答案发布,以便我将其标记为已接受。
  • @edc1591 我刚刚发布了一个答案,因为您没有使用 [at sign]piobyz ,所以之前没有看到您的评论;-)

标签: iphone objective-c ios cocoa-touch core-data


【解决方案1】:

您是否尝试将 NSError *error 设置为 nil?

【讨论】:

    【解决方案2】:

    挂在任何使用ManagedObjectContext 的东西上是死锁的标志。要么使用NSLocking protocol,要么为每个线程和synchronize them创建一个新的MOC

    另一个来自 Apple 的有用文档 -> Concurrency with Core Data

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 2011-09-03
      • 2013-02-14
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多