【发布时间】:2020-10-01 20:30:57
【问题描述】:
我怀疑最近有人遇到过这样奇怪的问题。
当使用"-com.apple.CoreData.ConcurrencyDebug 1" 时,在运行参数中,如果其名称(PRODUCT_NAME 构建设置)以“音乐”开头,iOS 是 14.0 或 14.01(目前是最新版本),Xcode 会持续崩溃 iOS 应用程序,并执行一些基本的、完全有效的并发核心数据 API。
只需将 PRODUCT_NAME 更改为其他内容(例如,从“音乐收藏”更改为“我的音乐收藏)”即可防止崩溃。因此,通过简单地在两个选项之间切换应用程序名称,然后运行调试器,人们应该清楚地注意到应用程序崩溃而不是相应地崩溃。这应该是应用名称影响功能的明确证据。
我检测到这个问题是因为我的应用在 App Store 上可用,以“音乐”开头,并且在可以重现的特定条件下崩溃。更改我的应用名称时,相同的可重现场景不会导致崩溃。我花了将近一周的时间才找到这个问题,因为我不认为应用名称可能是根本原因。
通过在 Xcode 12 中创建一个新项目并添加几行代码,可以轻松重现 "-com.apple.CoreData.ConcurrencyDebug 1" 在执行有效代码时导致应用程序崩溃(但应用程序名称以“音乐”开头)的问题。以下链接中的说明如下所示。
我向 Apple 反馈助理提交了一份报告: https://feedbackassistant.apple.com/feedback/8761671
我还在 Apple 开发者论坛上详细描述了这个问题: https://developer.apple.com/forums/thread/662602
很高兴得到任何反馈。
【问题讨论】:
-
这真的很奇怪!我注意到如果 moc 是使用 NSMainQueueConcurrencyType 构建的,则没有错误。
-
没错。它只会发生在后台线程 (NSPrivateQueueConcurrencyType) 中。
标签: ios xcode core-data concurrency ios14