Swift 5 方法不能标记为@objc 因为参数2的类型不能在Objective-C中表示

Swift 5 Method cannot be marked @objc because the type of the parameter 2 cannot be represented in Objective-C

我在这段代码的第一行收到以下错误:

Method cannot be marked @objc because the type of the parameter cannot be represented in Objective-C

@objc static func makeShareLink( _ type: String, id: Int? = nil) -> String {
}

这个class声明是

@objc class Util: NSObject {
}

您不能表示公开给 Objective C 的可选 Int

这会起作用:

@objc static func makeShareLink( _ type: String, id: Int) -> String {
    ...
}

如果你想使用一个可以暴露给Objective-C的可选号码,这将起作用:

@objc static func makeShareLink( _ type: String, id: NSNumber? = nil) -> String {
    ...
}

之所以有效,是因为 NSNumber 是一个 对象 ,可以是 nil,但 Int 不表示为Objective C 中的对象,但作为 .