首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从Objective-C调用Swift类方法

从Objective-C调用Swift类方法
EN

Stack Overflow用户
提问于 2018-01-03 06:42:49
回答 1查看 6.1K关注 0票数 2

我在Swift中有此功能

class func someFunction(idValue: Int, completionHandler: @escaping (_ jsonData: JSON) -> ()) {
        (...)
        if (some validation) {
            completionHandler(jsonData)
        } else {
            completionHandler(JSON.null)
        }

    }

现在我想从Objective-C调用该函数。我正在做的是:

[[ClassName  new] someFunction:self.sesionId completionHandler:^{
    }];

但是抛出了"No visible @interface for 'ClassName‘声明选择器'someFunction:completionHandler:’“

如何调用此函数?

EN

回答 1

Stack Overflow用户

发布于 2019-06-04 03:12:04

除了继承NSObject并使用@objc声明类之外,似乎还必须将@objc添加到函数声明中,才能在objective-c类/文件中看到它。

如下所示:

@objc class SomeClass:NSObject {


 @objc func someFunction(_:Any) -> Bool {  
        return true
       }

}

然后,当正常调用时,它会显示在自动完成中:

#import "PROJECT_Name-Swift.h"
@implementation SomeObjCClass
...


-(void)someObjCMethod{

    SomeClass* instance = [[SomeClass alloc]init];

    [instance someFunction:(id _Nonnull)]
}
...
@end

public关键字出现似乎不会以任何方式影响它

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48068845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档