sta*_*kri 4 objective-c ios ios-frameworks swift ios-extensions
我创建了一个简单的 iOS 框架 Swift 项目,并添加了一个Logger带有单个存根方法的Swift 类log(_:)
class Logger: NSObject {
func log(_ message:String) {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
类Logger和log方法是框架内部的,通常构建不会将它们暴露给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)
有人可以解释一下为什么吗?提前致谢!
一旦启用“仅允许应用程序扩展 API”,生成的标头将包含公共类和内部类。
我相信这可能是 Xcode 中的一个错误,因为此设置应该只影响编译发出的警告(如果您引用非扩展 API),而不影响生成的内容Module-Swift.h
我现在正在提交错误报告。
| 归档时间: |
|
| 查看次数: |
3932 次 |
| 最近记录: |