在对iOS的Xcode项目进行调试时,我遇到了一个运行时错误。该项目运行在运行iPhone 15.5的iOS 8设备上。我在运行macOS蒙特雷版本12.5的macOS上使用Xcode版本13.4.1。
错误消息发生在我初始化自定义结构的代码行中。
线程3: EXC_BAD_ACCESS (code=2,address=0x16dbc7ff0)
这是我的相关代码。错误消息以红色显示,其中正在初始化GroupLocalCache。
import Foundation
import CloudKit
// Wrap a CKRecordZone and its caches (each record type should have its records saved in the caches.
//
final class Zone {
let cloudKitZone: CKRecordZone
let caches = [BaseLocalCache]()
private var groupCache: GroupLocalCache
init(cloudKitZone: CKRecordZone, container: CKContainer, cloudKitDB: CKDatabase) {
self.cloudKitZone = cloudKitZone
self.groupCache = GroupLocalCache(container: container, cloudKitDB: cloudKitDB, cloudKitZone: cloudKitZone)
}
}下面是GroupLocalCache的代码:
final class GroupLocalCache: BaseLocalCache {
let container: CKContainer
let cloudKitDB: CKDatabase
let zone: Zone
private var serverChangeToken: CKServerChangeToken?
private var groups = [Group]()
init(container: CKContainer, cloudKitDB: CKDatabase, cloudKitZone: CKRecordZone) {
self.container = container
self.cloudKitDB = cloudKitDB
self.zone = Zone(cloudKitZone: cloudKitZone, container: container, cloudKitDB: cloudKitDB)
super.init()
fetchChanges() // Fetching changes with a nil token to build up the cache.
}
}BaseLocalCache是BaseLocalCache类的一个修改版本,它附带了来自Apple页面:与其他CloudKit用户共享iCloud数据的CloudKitShare Xcode项目。
我想在上面写着"code=2“的消息中查找"2”所代表的内容。
在stackoverflow*和苹果开发人员论坛上为这个相同的错误发布的其他文章针对的是与我代码中的错误不同的特定情况。
我想知道错误的低级原因是什么,所以我需要知道在异常错误消息中显示的代码是什么,因为它们告诉了异常错误的真正原因是什么,而不是对有关异常错误的帖子的回答。
我想我曾经在苹果以外的另一个来源找到了这些代码的文档。似乎有一些代码被硬件制造商用于“架构”,如"arm64“和"armv7”。我在Xcode项目构建设置中看到了这些设置。
我真的需要知道错误消息中给出的每一段代码代表什么吗?
我在Apple的开发人员文档中找到了这篇文章:
在苹果的异常处理框架上,我在谷歌:异常处理的搜索中找到了这些文档。我看不出我需要什么。这个框架似乎比我现在所需要的要多。
发布于 2022-08-05 10:19:48
您目前有一个无限的对象创建循环。这就是你撞车的原因。
当崩溃时,不要犹豫地看到调用堆栈,你应该清楚地看到它。
Zone初始化,调用GroupLocalCache初始化,后者调用Zone初始化,后者将调用GroupLocalCache初始化,等等。
所以你需要改变你的对象的逻辑。
https://stackoverflow.com/questions/73246183
复制相似问题