假设我有一个Swift类
@objcMembers class C: NSObject {
let range: ClosedRange<Int>
init(range: ClosedRange<Int>) {
self.range = range
super.init()
}
convenience init(min: Int, max: Int) {
self.init(range: min...max)
}
}
有没有办法让convenience init
只在Objective-C中可用,这样API就更小了?
1条答案
按热度按时间tktrz96b1#
你可以将这个方法暴露给Objective-C运行时,同时使它成为
private
。但是,这需要您自己引入私有方法的接口(理想情况下,通过扩展自动生成的接口,而不是引入单独的类声明)。你的Swift类应该看起来像这样:然后添加缺少的Objective-C部分作为类类别:
现在你的Swift代码将不能引用构造函数(因为它有
private
访问修饰符),而Objective-C代码可以很好地使用它。