将 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
我有一个 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