提问人:daniel 提问时间:8/5/2022 最后编辑:daniel 更新时间:8/5/2022 访问量:209
异常错误“线程 3:EXC_BAD_ACCESS(代码=2,地址=0x16dbc7ff0)”中的代码是什么意思?
What does that code mean in exception error "Thread 3: EXC_BAD_ACCESS (code=2, address=0x16dbc7ff0)"?
问:
我在 iOS 版 Xcode 项目的调试运行期间遇到了运行时错误。该项目在运行 iOS 15.5 的 iPhone 8 设备上运行。我在运行 macOS Monterey 版本 13.4.1 的 Mac Pro 上使用 Xcode 版本 12.5。
错误消息发生在我初始化自定义结构的一行代码中。
线程 3:EXC_BAD_ACCESS(代码=2,地址=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 类的修改版本,该类随 CloudKitShare Xcode 项目一起提供,来自以下 Apple 网页:与其他 iCloud 用户共享 CloudKit 数据。
我想在消息中查找“code=2”中“2”代表什么。
堆栈溢出* 和 Apple 开发者论坛上针对同一错误的其他帖子解决了与我的代码中的错误不同的特定情况。
我想知道错误的低级原因是什么,所以我需要知道异常错误消息中显示的那些代码是什么,因为它们告诉异常错误的真正原因是什么,比通常发现的有关异常错误的帖子的答案要低。
我想我曾经在 Apple 以外的另一个来源找到过这些代码的文档。硬件制造商似乎将一些代码用于“架构”,例如“arm64”和“armv7”。我在 Xcode 项目构建设置中看到了这些。
我真的需要知道错误消息中给出的每个代码代表什么吗?
我在 Apple 的开发者文档中找到了这篇文章:
我在 Google 的搜索中找到了有关 Apple 异常处理框架的文档:异常处理。我看不出我需要什么。这个框架似乎比我目前需要的要多。
答:
您目前有一个无限循环的对象创建。这就是你崩溃的原因。
崩溃时,不要犹豫,看看调用堆栈,你应该看清楚。
初始化,调用初始化,调用初始化,调用初始化,调用初始化,等等。Zone
GroupLocalCache
Zone
GroupLocalCache
因此,您需要更改对象的逻辑。
评论