gpt4 book ai didi

Swift 编译器错误 : Segmentation-fault 11 thrown when using type constraints

转载 作者:搜寻专家 更新时间:2023-11-01 05:41:48 24 4
gpt4 key购买 nike

所以,很快我就收到了以下错误:

Command failed due to signal: Segmentation fault: 11, While emitting IR SIL function

在以下代码中通过类型约束创建类的新实例时:

public protocol AddOn {
init()
init(main: Main, name: String)
func getId() -> String
func description()
}


public class Foo : NSObject, AddOn {
private var _main: Main?
private var _name: String = ""
required override public init() {

}

required public init(main: Main, name: String) {
self._main = main
self._name = name
}

public func getId() -> String {
return "Foo"
}

public func description() {
NSLog("Class: %@", self.getId())
}
}

public class Main {
private var _addons = Dictionary<String, AddOn.Type>()
init() {

}

public func registerAddOn<T: AddOn>(addOnProtocol: T.Type) {
// Here it is possible to Init the AddOn.Type to an object (e.q. Foo())
let addOn: AddOn = addOnProtocol() as AddOn
self._addons[addOn.getId()] = addOnProtocol
}

public func createInstance(addonClassName: String) {
var getAddOnType: AddOn.Type = self._addons[addonClassName]!
//Segmentation fault 11: While emitting IR SIL function
let instance = getAddOnType(main: self, name: "Bar")
}
}

var client: Main = Main()
client.registerAddOn(Foo.self)
client.createInstance("Foo")

在 registerAddOn 中我可以创建类 Foo 的新实例,但不能在 createInstance 中创建

最佳答案

OP 的解决方案。

private var _addons = Dictionary<String, AnyClass>()
public func registerAddOn(addOnProtocol: AnyClass) {
let addOnType = addOnProtocol as NSObject.Type
let addOn: AddOn = addOnType() as AddOn
self._addons[addOn.getId()] = addOnProtocol
}

public func createInstance(addonClassName: String) {
var getAddOnType: AddOn.Type = self._addons[addonClassName]!
let instance = getAddOnType(main: self, name: "Bar")
}
}

关于Swift 编译器错误 : Segmentation-fault 11 thrown when using type constraints,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28766541/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com