分段错误 Xcode 11
Segmentation fault Xcode 11
序列化时出现分段错误'AnyArrayBox'
- 同时 运行 传递 #0 SILModuleTransform "SerializeSILPass"。
- 序列化时 'AnyArrayBox'(在模块 'Module' 中)
0 swift 0x000000010d7abeb3 PrintStackTraceSignalHandler(void*) + 51
1 swift 0x000000010d7ab686 SignalHandler(int) + 358
2 libsystem_platform.dylib 0x00007fff76c31b5d _sigtramp + 29
这是 AnyArray 结构
struct AnyArray<Element>: RandomAccessCollection {
typealias Index = Int
private let box: AnyArrayBase<Element>
init<Concrete: RandomAccessCollection>(_ concrete: Concrete) where Concrete.Element == Element, Concrete.Indices == Indices {
box = AnyArrayBox(concrete)
}
var startIndex: Int { return box.startIndex }
var endIndex: Int { return box.endIndex }
func index(after i: Int) -> Int {
return box.index(after: i)
}
subscript(position: Index) -> Element {
return box[position]
}
}
还有两个用在那里
private class AnyArrayBase<Element>: RandomAccessCollection {
init() {
guard type(of: self) != AnyArrayBase.self else {
fatalError("_AnyArrayBase<Element> is an abstract class, it can not be created; create subclass instance instead")
}
}
typealias Index = Int
var startIndex: Int { fatalError("Must override") }
var endIndex: Int { fatalError("Must override") }
func index(after i: Int) -> Int {
fatalError("Must override")
}
subscript(position: Index) -> Element {
fatalError("Must override")
}
}
private final class AnyArrayBox<Concrete: RandomAccessCollection>: AnyArrayBase<Concrete.Element> where Concrete.Indices == AnyArrayBase<Concrete.Element>.Indices {
private let concrete: Concrete
init(_ concrete: Concrete) {
self.concrete = concrete
}
override var startIndex: Int { return concrete.startIndex }
override var endIndex: Int { return concrete.endIndex }
override func index(after i: Int) -> Int {
return concrete.index(after: i)
}
override subscript(position: Index) -> Element {
return concrete[position]
}
}
我该如何解决?有什么建议吗?
我在移动到 Xcode 11.0 (11A420a) 时遇到了同样的问题
它指向一行,我将元组作为结构的一部分:
var dim_values : (dim1:String?,dim2:String?,dim3:String?)
我已将其更改为另一个结构并解决了问题。
这有效
var dim_values : (dim1:String?,dim2:String?,dim3:String?) = (nil, nil, nil)
显然编译器需要显式初始化(为 nil)
序列化时出现分段错误'AnyArrayBox'
- 同时 运行 传递 #0 SILModuleTransform "SerializeSILPass"。
- 序列化时 'AnyArrayBox'(在模块 'Module' 中) 0 swift 0x000000010d7abeb3 PrintStackTraceSignalHandler(void*) + 51 1 swift 0x000000010d7ab686 SignalHandler(int) + 358 2 libsystem_platform.dylib 0x00007fff76c31b5d _sigtramp + 29
这是 AnyArray 结构
struct AnyArray<Element>: RandomAccessCollection {
typealias Index = Int
private let box: AnyArrayBase<Element>
init<Concrete: RandomAccessCollection>(_ concrete: Concrete) where Concrete.Element == Element, Concrete.Indices == Indices {
box = AnyArrayBox(concrete)
}
var startIndex: Int { return box.startIndex }
var endIndex: Int { return box.endIndex }
func index(after i: Int) -> Int {
return box.index(after: i)
}
subscript(position: Index) -> Element {
return box[position]
}
}
还有两个用在那里
private class AnyArrayBase<Element>: RandomAccessCollection {
init() {
guard type(of: self) != AnyArrayBase.self else {
fatalError("_AnyArrayBase<Element> is an abstract class, it can not be created; create subclass instance instead")
}
}
typealias Index = Int
var startIndex: Int { fatalError("Must override") }
var endIndex: Int { fatalError("Must override") }
func index(after i: Int) -> Int {
fatalError("Must override")
}
subscript(position: Index) -> Element {
fatalError("Must override")
}
}
private final class AnyArrayBox<Concrete: RandomAccessCollection>: AnyArrayBase<Concrete.Element> where Concrete.Indices == AnyArrayBase<Concrete.Element>.Indices {
private let concrete: Concrete
init(_ concrete: Concrete) {
self.concrete = concrete
}
override var startIndex: Int { return concrete.startIndex }
override var endIndex: Int { return concrete.endIndex }
override func index(after i: Int) -> Int {
return concrete.index(after: i)
}
override subscript(position: Index) -> Element {
return concrete[position]
}
}
我该如何解决?有什么建议吗?
我在移动到 Xcode 11.0 (11A420a) 时遇到了同样的问题 它指向一行,我将元组作为结构的一部分:
var dim_values : (dim1:String?,dim2:String?,dim3:String?)
我已将其更改为另一个结构并解决了问题。
这有效
var dim_values : (dim1:String?,dim2:String?,dim3:String?) = (nil, nil, nil)
显然编译器需要显式初始化(为 nil)