objective-c - 从后台线程访问 NSManagedObject 上的属性是否会使上下文跨该线程?

标签 objective-c core-data

我需要使用 NSManagedObjectContext 上的属性作为在后台运行的方法中的参数。调用此方法后,即使我所做的只是获取属性值,但从那时起,我就会在该上下文中遇到问题。

最佳答案

来自docs :

Any time you manipulate or access managed objects, you use the associated managed object context. Core Data does not present a situation where reads are “safe” but changes are “dangerous”—every operation is “dangerous” because every operation has cache coherency effects and can trigger faulting.

我在多线程应用程序中使用 Core Data 一段时间了(也在 iOS 5 之前的时代,没有父上下文等)。我怀疑它在幕后做了一些线程巫毒(锁之类的东西)。如果您想要 100% 安全,则在后台线程中,如果尚未在同一线程上创建 NSManagedObjectContext,则无法调用 NSManagedObject 上的任何方法。否则,可能会发生未定义的行为(例如,我遇到了一些死锁)。

关于objective-c - 从后台线程访问 NSManagedObject 上的属性是否会使上下文跨该线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25067838/

相关文章:

c - 如何在 Objective-C/ANSI C 中创建用于对象实例化的宏

ios - 如何为核心数据中的属性替换或设置新值?

ios - RestKit 并作为 NSManagedObject 保存到 CoreData

ios - 将方法添加到 Xcode 10 Core Data 生成的文件

objective-c - Webview 作为拖动目的地?

ios - 唯一的字符 - 不是键盘上的特殊/数字 - iPhone

objective-c - 如何在cocos2d中使用self.view?

iphone - 如何将数据包装在iPhone单元格的标签中?

ios - 在 CoreData 中保留 ABPerson 的引用

ios - 使用 CoreData 如何配置获取请求来查找即将到来的生日?