在swift

时间:2015-08-18 14:34:38

标签: ios objective-c swift swift2

我的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之间生成的桥接接口没有问题。)

1 个答案:

答案 0 :(得分:0)

我认为问题是“do”是一个保留关键字。我尝试了这个并得到了一个稍微不同的错误(关于错过一个while循环的括号),但是将方法更改为“doSomething”解决了这个问题。

通过将@interface声明移动到Task.m而不是Task.h,我能够重现您看到的错误。请确认您拥有此代码的位置,因为只有在.h文件中才能看到其他类。