Swift3 某些Objective-C方法在Swift 3中不可见

Swift3 某些Objective-C方法在Swift 3中不可见,swift3,j2objc,Swift3,J2objc,为什么采用这种方法 +(instancetype)数组,其中包含NSData:(NSData*)数据 在j2obj项目中 Swift3看不见 但另一个是可见的。 例如: +(instancetype)newArrayWithBytes:(const jbyte*)buf count:(nsInteger)countObjC中的工厂方法-即返回instancetype(或类的实际类型)并以类的通用名称开头的类方法-作为初始值设定项导入Swift 因此,名称中包含数组的类上的+(instancet

为什么采用这种方法
+(instancetype)数组,其中包含NSData:(NSData*)数据

j2obj项目中

Swift3看不见

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


+(instancetype)newArrayWithBytes:(const jbyte*)buf count:(nsInteger)count

ObjC中的工厂方法-即返回
instancetype
(或类的实际类型)并以类的通用名称开头的类方法-作为初始值设定项导入Swift

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

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


有关更多详细信息,请阅读Apple的使用Swift与Cocoa和Objective-C文档中的相关内容。

ObjC中的工厂方法-即返回instancetype(或类的实际类型)并以类的通用名称开头的类方法-作为初始值设定项导入Swift

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

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


有关更多详细信息,请阅读苹果的《使用Swift与Cocoa和Objective-C文档》。

你确定它不可见吗?正常的导入程序规则会将其转换为初始值设定项-在Xcode的“生成的接口”视图中查找类似于
init(nsData:)
的内容。@rickster,谢谢。我的错,不用担心。。。将评论转换为答案,以便对其他人更有帮助。您确定它是不可见的吗?正常的导入程序规则会将其转换为初始值设定项-在Xcode的“生成的接口”视图中查找类似于
init(nsData:)
的内容。@rickster,谢谢。我的错,不用担心。。。将评论转换为答案,以便对其他人更有帮助。