ios - @NSManaged 属性线程安全吗?
问题描述
例如在这种情况下:
@NSManaged public var myProperty: SomeType
func someFunc() {
concurrentNSManagedObjectContext.perform {
doSomething(with: self.myProperty)
}
}
如果是,最佳做法是什么?
解决方案
使用@NSManaged
对线程安全没有影响。它帮助 Core Data 管理属性,但不会为线程或其他任何东西保持属性安全。
如果函数与 Core Data 相关,按原样使用perform
会很好,因为Core Data 管理线程安全的方式也是如此。进入内部或安全的财产;在这些功能之外访问它通常是不安全的。doSomething
perform
performAndWait
perform
performAndWait
上述唯一的例外是,如果您的托管对象上下文使用主队列并发(例如,如果您正在使用NSPersistentContainer
并且上下文是viewContext
属性)并且您确定您的代码正在主队列上运行,那么您不需要使用perform
or performAndWait
。在这种情况下使用它们还不错,但也没有必要。
推荐阅读
- html - 页面加载时没有自动播放 mp3 文件
- ruby - Rest-Client gem RoR,获取 SSL 错误版本错误
- javascript - JavaScript 文件名中的 ?v=something 是什么意思?
- wordpress - 子主题未显示为 wordpress 中帖子的模板
- python-3.x - 最小值最大值和平均值作为新列 Python Pandas
- reactjs - 如果数据更新,FlatList 不会更新
- javascript - 如何为电子中的特定窗口制作单独的菜单?
- r - 缩放辅助 y 轴
- python - Pandas 不正确保存到 CSV
- r - 如何使用 anovascores 结果来消除 pvalue 大于 0.01 的列/预测变量