我有一個 ProfileRegistration 結構,它只是一個基本模型。我沒有任何問題。但是,一旦我向模型添加新屬性,應用程式就會在運行時崩潰,只要它在代碼中的任何位置被訪問。
// Causes app to crash
struct ProfileRegistration: Codable {
let resourceNumber: String?
let nickName: String?
let firstName: String?
let initials: String?
let name: String?
let lastName: String?
let gender: Gender?
let birthdate: String?
let nationality: String?
let phoneNumber: String?
let email: String?
let insuranceNumber: String?
let employmentDate: String?
let username: String?
var worksteadLocations: [WorksteadLocation] = []
var coworkerInformations: [CoworkerInformation] = []
var worksteadLocation: WorksteadLocation? {
worksteadLocations.first
}
var jobCoachFirstName: String? {
coworkerInformations.first?.firstName
}
}
// Doesn't cause app to crash
struct ProfileRegistration: Codable {
let resourceNumber: String?
let nickName: String?
let firstName: String?
let initials: String?
// let name: String?
let lastName: String?
let gender: Gender?
let birthdate: String?
let nationality: String?
let phoneNumber: String?
let email: String?
let insuranceNumber: String?
let employmentDate: String?
let username: String?
var worksteadLocations: [WorksteadLocation] = []
var coworkerInformations: [CoworkerInformation] = []
var worksteadLocation: WorksteadLocation? {
worksteadLocations.first
}
var jobCoachFirstName: String? {
coworkerInformations.first?.firstName
}
}
我得到錯誤:
Thread 10: EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
就在堆疊中的錯誤上方,我看到了這個
async function pointer to reabstraction thunk helper from @escaping @callee_guaranteed @Sendable @async () -> (@owned Workstead.ProfileRegistration, @error @owned Swift.Error) to @escaping @callee_guaranteed @async () -> (@out Workstead.ProfileRegistration, @error @owned Swift.Error)
完整的堆疊:
Workstead`partial apply for thunk for @escaping @callee_guaranteed @Sendable @async () -> (@owned ProfileRegistration, @error @owned Error):
0x102cc10f0 < 0>: orq 0x9d5409(%rip), %rbp ; (void *)0x1000000000000000
0x102cc10f7 < 7>: pushq %rbp
0x102cc10f8 < 8>: pushq %r14
0x102cc10fa < 10>: leaq 0x8(%rsp), %rbp
0x102cc10ff < 15>: subq $0x38, %rsp
0x102cc1103 < 19>: movq %r14, -0x10(%rbp)
0x102cc1107 < 23>: movq %rdi, -0x28(%rbp)
0x102cc110b < 27>: xorl %eax, %eax
0x102cc110d < 29>: movl %eax, %edi
0x102cc110f < 31>: callq 0x102ccf350 ; ___lldb_unnamed_symbol350$$Workstead
0x102cc1114 < 36>: movq %r14, 0x18(%r14)
0x102cc1118 < 40>: movq 0x10(%r13), %rax
0x102cc111c < 44>: movq %rax, -0x20(%rbp)
0x102cc1120 < 48>: movq 0x18(%r13), %rax
0x102cc1124 < 52>: movq %rax, -0x18(%rbp)
0x102cc1128 < 56>: movl 0xa52fd6(%rip), %eax ; async function pointer to reabstraction thunk helper from @escaping @callee_guaranteed @Sendable @async () -> (@owned Workstead.ProfileRegistration, @error @owned Swift.Error) to @escaping @callee_guaranteed @async () -> (@out Workstead.ProfileRegistration, @error @owned Swift.Error) 4
0x102cc112e < 62>: movl %eax, %edi
0x102cc1130 < 64>: callq 0x10354a1de ; symbol stub for: swift_task_alloc
-> 0x102cc1135 < 69>: movq -0x28(%rbp), %rdi
0x102cc1139 < 73>: movq -0x20(%rbp), %rsi
0x102cc113d < 77>: movq -0x18(%rbp), %rdx
0x102cc1141 < 81>: movq %rax, %r14
0x102cc1144 < 84>: movq -0x10(%rbp), %rax
0x102cc1148 < 88>: movq %r14, 0x20(%rax)
0x102cc114c < 92>: movq 0x18(%rax), %rax
0x102cc1150 < 96>: movq %rax, (%r14)
0x102cc1153 < 99>: leaq 0x26(%rip), %rax ; (1) await resume partial function for partial apply forwarder for reabstraction thunk helper from @escaping @callee_guaranteed @Sendable @async () -> (@owned Workstead.ProfileRegistration, @error @owned Swift.Error) to @escaping @callee_guaranteed @async () -> (@out Workstead.ProfileRegistration, @error @owned Swift.Error) at <compiler-generated>
0x102cc115a < 106>: movq %rax, 0x8(%r14)
0x102cc115e < 110>: addq $0x30, %rsp
0x102cc1162 < 114>: addq $0x10, %rsp
0x102cc1166 < 118>: popq %rbp
0x102cc1167 < 119>: btrq $0x3c, %rbp
0x102cc116c < 124>: jmp 0x102cc0f60 ; reabstraction thunk helper from @escaping @callee_guaranteed @Sendable @async () -> (@owned Workstead.ProfileRegistration, @error @owned Swift.Error) to @escaping @callee_guaranteed @async () -> (@out Workstead.ProfileRegistration, @error @owned Swift.Error) at <compiler-generated>
我添加到結構中的屬性似乎并不重要,當我添加一個時它總是崩潰。當我洗掉一個屬性時它不會崩潰。
我正在使用 Xcode 版本 13.3.1 (13E500a) 并在 iOS 15.4 上運行,在多個設備上進行了測驗
Xcode 錯誤截圖
uj5u.com熱心網友回復:
我有完全相同的錯誤。如果我在可編碼結構中再添加一個欄位,它就會崩潰。就我而言,我有兩個并發的網路請求:
async let req1 = await someManager.fetch()
async let req2 = await someManager.get(id: uid)
let (result1, result2) = await (req1, req2)
我將其拆分為同步網路請求:
let result1 = await someManager.fetch()
let result2 = await someManager.get(id: uid)
它開始起作用了。
我相信iOS方面存在一些問題。我使用 Xcode 13.4。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/478512.html
