偶尔“非法尝试在不同背景下的对象之间建立关系......”

时间:2012-08-20 17:29:33

标签: iphone ipad core-data nsmanagedobjectcontext

我们偶尔会收到用户的崩溃报告(我们正在使用崩溃报告包将崩溃发送到我们的服务器),并出现以下错误:

“在不同背景下的对象之间建立关系的非法尝试”......

(不同的报告可能有不同的关系,在所有报告中都不一样)。

这似乎很容易,除了:

  1. 我们的代码中只有一个NSManagedObject--来自App委托的单身人士。

  2. 除主线程外,我们不使用任何线程。

  3. 使用initWithEntity:insertIntoManagedObjectContext:使用上下文分配所有对象(没有一个使用简单的init分配)。

  4. 错误绝不会发生在我们的测试中(数千次运行)。

  5. 基本上我们被卡住了。

    任何想法都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

每当我在主线程中使用Core Data时,我会在处理上下文的任何方法中放置一个NSAssert,以便更加确定我知道主线程中发生的一切。像这样:

NSAssert([NSThread isMainThread], @"This method is not in the main thread");

尝试使用它来加倍/三倍/四倍检查事情是否发生在您认为的位置。