我的iOS项目包含objective-c代码和swift代码。
说,我有一个名为Task
的类,它包含类方法 do
:
@interface Task: NSObject
+ (void) doSomething:(NSString *) value;
@end
上面的@interface声明位于 Task.h 文件中。其他objective-c类能够毫无问题地调用该方法。
我的 swift 代码想要调用doSomething
方法,
Task.doSomething(“do task now!”)
但是上面的代码行会得到以下编译器错误:
‘Task.Type’ does not have a member named ‘doSomething’.
为什么呢?在swift代码中调用objective-c类方法的正确方法是什么?
(在objective-c和swift之间生成的桥接接口没有问题。)
答案 0 :(得分:0)
我认为问题是“do”是一个保留关键字。我尝试了这个并得到了一个稍微不同的错误(关于错过一个while循环的括号),但是将方法更改为“doSomething”解决了这个问题。
通过将@interface声明移动到Task.m而不是Task.h,我能够重现您看到的错误。请确认您拥有此代码的位置,因为只有在.h文件中才能看到其他类。