使com.apple.CoreData.ConcurrencyDebug 1工作
我想迁移一些代码来使用NSPrivateQueueConcurrencyType
NSManagedObjectContext
。
在将上下文保存到其父项后,我有时会遇到非常奇怪的错误,然后保存父项。 我想知道如果这些是由于没有正确使用NSPrivateQueueConcurrencyType
上下文。
我已经打开-com.apple.CoreData.ConcurrencyDebug 1
来尝试debugging这个。 我很确定,这是行不通的。 如果我在托pipe对象上下文上执行操作,或者在不使用performBlock:
情况下更改其对象,则不会收到错误或抛出。
以下是我如何设置计划的参数: 。 我也尝试过,没有领先-
。
任何想法我做错了什么?
参数-com.apple.CoreData.ConcurrencyDebug
可从iOS> 8和OSX> 10.10获得:确保您的目标平台是正确的。
如果标志被启用,控制台应该logging下来:
CoreData: annotation: Core Data multi-threading assertions enabled.
来源:来自Ole Begemann的核心数据并发debugging
使用XCode 8.x和iOS 10.x,我想为任何想要实现这一点的人提供简化的答案。
您将首先需要修改您的应用程序的计划:
selectscheme后,select应该出现在列表底部附近的编辑scheme:
打开时,请确保已select“运行”并select“参数”。 您将需要复制以下值:
-
-com.apple.CoreData.ConcurrencyDebug 1
-
-com.apple.CoreData.Logging.stderr 1
你的屏幕应该是这样的:
启动应用程序后,当启用这些选项时,您应该会看到它在控制台中显示:
CoreData:注释:启用了Core Datamultithreading断言。
而当你遇到由此产生的exception,你可能会看到这样的:
CoreData` + [NSManagedObjectContext Multithreading_Violation_AllThatIsLeftToUsIsHonor ]:
您可以返回到scheme编辑器并根据需要禁用此日志logging,以防止将来发生exception。
- iPhone的iOS如何合并核心数据NSManagedObjectContext?
- 在代码中使用genericsInt – 在Core Data iOS中使用32或64位Int?
- 在coreData xcode iphone中创build复合谓词
- 核心数据Swift在优化的版本中抛出generics函数失败
- 从Xcode中删除.xcdatamodel文件?
- 核心数据严重的应用程序错误在controllerDidChangeContent
- 为什么我应该为每个新线程或NSOperation创build一个NSManagedObjectContext,而不是在主线程上调用Core Data?
- Xcode 8无法打开Model.xcdatamodeld
- iphone::使用NSPredicate无法识别的select器错误