我有一个使用dispatch_queue_t的应用程序,并且对于OS / Device组合中的大多数用户而言一直运行良好。我有许多线程继续运行并且运行dispatch_queue_t来获取某些数据。为了跟踪线程之间的NSManagedObjectContexts,我使用一个NSDictionary来跟踪并将NSManagedObjectContext映射到正确的线程。
现在问题出现在长时间运行的队列中,用于从服务器获取数据,因此需要时间,字典中的NSManagedObjectContext引用更改为String,其值为指向数据库的路径。
我从字典中删除对象的唯一一次是在threadExit委托上,因此永远不会删除引用,只是NSManagedObjectContext引用更改为String(指向DB文件)。
可能导致这种情况的原因是什么?
答案 0 :(得分:0)
糟糕!愚蠢的疏忽。
在代码深处的某个地方,在将上下文添加到Dictionary之后,它正在被释放。现在,为什么上下文改变为字符串而不仅仅是崩溃是一个谜。