将 Swift 内部函数暴露给 Objective-C 文件(在框架中)而不是 public

Exposing Swift internal func to Objective-C file(in framework) without making it public

我有一个 Swift 框架,其中有一个 Objective-C 文件。我想从该文件访问一个声明为内部的方法。我知道我可以将其更改为 public 以使其可用。但我不想将其公开给客户端应用程序。有什么办法可以实现吗?

在.swift:

@objc internal class func callBack(str: String) {
    print("Swift method was called | Passed value: " + str)
}

在.m:

- (void)callSwiftFunc {
    // This is not available, only if I set public in Swift
    [SwiftClass callBackWithStr:@"blabla"];
}

您可以显式设置 objc 选择器,然后添加一个声明方法的类别:

@objc替换为@objc(callBackWithStr:),然后简单地添加前向声明:

@interface SwiftClass ()
+ (void)callBackWithStr:(NSString *)string;
@end