一些Objective-C方法在Swift 3中是不可见的

时间:2016-12-21 18:59:23

标签: swift3 j2objc

为什么这个方法 <img>

j2obj 项目

中的

https://github.com/google/j2objc/blob/master/jre_emul/Classes/IOSPrimitiveArray.h#L252

对Swift3不可见?

但另一个是可见的。 例如:

>

1 个答案:

答案 0 :(得分:2)

ObjC中的工厂方法 - 即返回instancetype(或类的实际类型)并以类的公用名开头的类方法 - 作为初始化器导入Swift。

因此,名称中包含+(instancetype)arrayWithSomething:的类的方法Array会导入为init(something:)。在您的情况下,+arrayWithNSData:将导入init(nsData:)。 (您可能会认为它会删除“NS”,因为它还会将参数类型从NSData转换为其等效的Foundation.Data的Swift值类型...但它不会。)< / p>

要查找此效果和其他导入器效果,您可以通过查看源的“生成的界面”视图在Xcode中查看结果。检查跳转栏左侧的相关项目按钮或助理编辑器。

有关详细信息,请参阅Apple的使用Swift with Cocoa和Objective-C 文档中的Initialization