gpt4 book ai didi

ios - 检查 iOS 框架项目中的 "Allow app extension API only"将内部类和方法暴露给消费者

转载 作者:搜寻专家 更新时间:2023-11-01 07:15:42 27 4
gpt4 key购买 nike

我创建了一个简单的 iOS 框架 Swift 项目并添加了一个 Swift 类 Logger 和一个 stub 方法 log(_:)

class Logger: NSObject {

func log(_ message:String) {
// ...
}
}

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

谁能解释一下为什么?提前致谢!

最佳答案

一旦启用“仅允许应用程序扩展 API”,生成的 header 将同时包含公共(public)类和内部类。

我相信这可能是 Xcode 中的一个错误,因为此设置只会影响编译发出的警告(如果您引用非扩展 API),而不会影响生成的 Module-Swift.h< 的内容

我现在正在提交错误报告。

关于ios - 检查 iOS 框架项目中的 "Allow app extension API only"将内部类和方法暴露给消费者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42319892/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com