小编sta*_*kri的帖子

在 iOS 框架项目中选中“仅允许应用程序扩展 API”会向消费者公开内部类和方法

我创建了一个简单的 iOS 框架 Swift 项目,并添加了一个Logger带有单个存根方法的Swift 类log(_:)

class Logger: NSObject {

    func log(_ message:String) {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

Loggerlog方法是框架内部的,通常构建不会将它们暴露给ObjC. 但是,如果我在框架目标的常规设置中选中“仅允许应用程序扩展 API”,则生成的内容MyFramework-Swift.h现在包含类和方法声明,这意味着两者对框架的使用者都是可见的,就像它们被声明为公共一样:

SWIFT_CLASS("_TtC9Framework6Logger")
@interface Logger : NSObject
- (void)log:(NSString * _Nonnull)message;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下为什么吗?提前致谢!

objective-c ios ios-frameworks swift ios-extensions

4
推荐指数
1
解决办法
3932
查看次数

标签 统计

ios ×1

ios-extensions ×1

ios-frameworks ×1

objective-c ×1

swift ×1