核对;“仅允许应用程序扩展API”;在iOS框架中,project向使用者公开内部类和方法
我创建了一个简单的iOS框架Swift项目,并使用一个存根方法添加了一个Swift类核对;“仅允许应用程序扩展API”;在iOS框架中,project向使用者公开内部类和方法,ios,objective-c,swift,ios-frameworks,ios-extensions,Ios,Objective C,Swift,Ios Frameworks,Ios Extensions,我创建了一个简单的iOS框架Swift项目,并使用一个存根方法添加了一个Swift类Logger Logger类和log方法是框架内部的,构建通常不会将它们暴露给ObjC。但是,如果我在框架目标的常规设置中选中“仅允许应用程序扩展API”,则生成的MyFramework Swift.h现在同时包含类和方法声明,这意味着框架的使用者可以看到它们,就好像它们被声明为公共的一样: SWIFT_CLASS("_TtC9Framework6Logger") @interface Logger : NSOb
Logger
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”,生成的头文件将同时包含公共类和内部类
我认为这可能是Xcode中的一个bug,因为此设置只会影响编译发出的警告(如果您引用非扩展API),而不会影响生成的模块Swift.h
我现在正在提交一份错误报告。当您在框架目标上选中
仅允许应用程序扩展API
时,它会强制编译器检查框架是否未调用任何API(禁止APINS\u扩展不可用
)
所有目标在生成设置中都有此反射。默认情况下,app extension
目标为Yes
Require Only App-Extension-Safe API
APPLICATION_EXTENSION_API_ONLY
您不应该使用屏幕截图发布代码片段。
//warning
linking against dylib not safe for use in application extensions
Require Only App-Extension-Safe API
APPLICATION_EXTENSION_API_ONLY