如何从Swift语言访问Objective-C类方法

Jak*_*Lin 17 objective-c ios swift

在我的Swift应用程序中,我需要weibo()从Objective-C 访问下面调用的类方法

@interface Weibo : NSObject
+ (Weibo*)weibo;
@end
Run Code Online (Sandbox Code Playgroud)

我已经配置了桥接头并尝试了以下语句

let w = Weibo.weibo() as Weibo
Run Code Online (Sandbox Code Playgroud)

它不起作用.

更新:我已经分配了回购并解决了这个问题,如下所示.

let w = Weibo.getWeibo() as Weibo // the method has been changed.
Run Code Online (Sandbox Code Playgroud)

它之所以不起作用,是因为Swift将其+ (Weibo*)weibo;视为一种便利构造函数.由于案例不同weibo,因此与班级名称Weibo相同.我需要更改名称以getWeibo解决此问题以支持Swift.

感谢每个人为这个答案做出贡献.特别感谢@Anil和@David

可靠的人

Ani*_*ese 18

+ (Weibo*)weibo;是你班级的班级方法Weibo.你可以像swift一样快速访问它

let w:Weibo = Weibo.weibo()
Run Code Online (Sandbox Code Playgroud)

但是当我尝试('weibo' is unavailable: use object construction 'Weibo()')可能是因为方法名称和类名相同时,它给了我错误.当我更改方法名称错误时

let w:Weibo = Weibo.getWeibo() // works: method name changed
Run Code Online (Sandbox Code Playgroud)

  • 这取决于方法的作用.swift编译器将其视为便利构造函数,这就是您收到错误消息的原因.如果是这种情况,你应该使用`let w = Weibo()`.如果,正如我怀疑的那样,它是一个单例方法,你需要将方法的名称更改为看起来不像一个方便的构造函数. (3认同)