'MyClass + BackdoorExtension.h'的Swift模块伞头警告

时间:2016-11-07 00:47:41

标签: objective-c swift xcode module frameworks

当我将我的框架编译成iOS应用程序项目时,我不断收到这些链接器警告:

<module-includes>:1:1: warning: umbrella header for module 'MyFramework' does not include header 'MyClass+StateAccess.h'
…/AppProject/AppClass.m:123:456 warning: missing submodule MyFramework.MyClass_BackdoorExtension' [-Wincomplete-umbrella]
#import <MyFramework/MyClass+BackdoorExtension.h>

然而,与这些SO答案不同:123;我不希望MyClass+BackdoorExtension.h与框架的所有其他标头混为一谈。 MyClass+BackdoorExtension.h是我的框架MyClass隐藏的“后门”界面 - BackdoorExtension成员的使用应生成error: property 'backdoorMember' not found on object of type 'MyClass *',除非具体应用源文件包含MyClass+BackdoorExtension.h

在Swift模块之前,这将按预期工作,而不会发出链接器警告;除非应用程序的backdoorMember文件具有.m,否则#import <MyFramework/MyClass+BackdoorExtension.h>无法访问,在添加完所有文件后,所有内容都会编译并在没有警告或运行时问题的情况下运行。就目前而言,一切都是编译和按预期运行,但我想压制警告(我是喜欢将警告视为必须修复错误的开发人员类型)。我想找到一种方法来使用现有的上述#import应用程序Objective-C文件以及应用程序Swift文件中的等效导入(例如import MyFramework.MyClass+BackdoorExtension

我已尝试explicit module s&amp; explicit header在我的框架module.modulemap中无效。

这是我当前的框架module.modulemap

module MyFramework {
    umbrella header "MyFramework.h"
    export *
}

和框架伞标题MyFramework.h

#import <Foundation/Foundation.h>

#import <MyFramework/BaseClass.h>
#import <MyFramework/MyClass.h>
#import <MyFramework/AnotherClass.h>

这是框架的MyClass+BackdoorExtension.h(它具有框架的公共目标成员资格):

#import <Foundation/Foundation.h>
#import "MyClass.h"

@interface MyClass (BackdoorExtension)

@property(nonatomic, assign, readonly) BOOL backdoorMember;

@end

我正在使用带有Apple LLVM 8.0.0版的Xcode 8.1(clang-800.0.42.1)。

0 个答案:

没有答案