无法从Objective C中的swift类调用方法

时间:2015-08-04 01:11:17

标签: ios objective-c swift

我正在开发一个用Objective C编写的iOS应用程序,它有一个用Swift编写的附加类。当我尝试在我的Obj C AppDelegate.m中调用一个时,我没有收到任何错误,但回复回调永远不会触发。

我的ObjC有以下方法:

 public void test() {
        new Thread(runWaitResponseProcedure).start();
    }

    Runnable runWaitResponseProcedure = new Runnable() {
        startTimer();
    }

- (void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void(^)(NSDictionary *replyInfo))reply { NSString *success =[ApiController handleCall]; //NSString *success =[self hello]; // This works if you swap it with the above method //NSString *success = @"hello"; // when uncommented this also works. NSDictionary *dict = @{@"status" : success}; reply(dict); } -(NSString *)hello{ return @"hello"; }

我的快速课程看起来像这样:

NSString *success = [SwiftClass swiftMethod];

除了上面的代码之外,我还确保包含@objc class SwiftClass { @objc func swiftMethod()->NSString{ return "it works!" } } ,并为swift代码创建桥接头。

我错过了什么吗?

2 个答案:

答案 0 :(得分:6)

swiftMethod实例方法,而不是方法。你可以这样称呼它:

NSString *success = [[SwiftClass new] swiftMethod];

如果要将其称为类方法,则需要使用class声明它:

@objc class SwiftClass {
    @objc class func swiftMethod()->NSString{
        return "it works!"
    }
}

答案 1 :(得分:0)

此外,您必须在课程和方法

之前添加@objc
@objc class MyClass: NSObjec {
   @objc func methodName() {
   }
}