我的iOS项目包含objective-c代码和swift代码 .
说,我有一个名为 Task
的类,它包含一个 class method 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之间生成的桥接接口没有问题 . )
1 回答
我认为问题是“do”是一个保留关键字 . 我尝试了这个并得到了一个稍微不同的错误(关于错过一个while循环的括号),但是将方法更改为“doSomething”修复了问题 .
通过将@interface声明移动到Task.m而不是Task.h,我能够重现您看到的错误 . 请确认您拥有此代码的位置,因为只有在.h文件中才能看到其他类 .