我在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:’“
如何调用此函数?
发布于 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关键字出现似乎不会以任何方式影响它
https://stackoverflow.com/questions/48068845
复制相似问题