我正在尝试为我们的 tvOS 应用程序编写一个 Top Shelf 扩展。我们有一个私有框架来处理我们所有的低级数据代码。
我们正在使用 Xcode 7.1 Beta 2。
关于框架的几点说明……</p>
它仅使用扩展安全 API。
它适用于 iOS 和 tvOS。
它主要是用 Swift 编写的,但有一些私有的 C++ 和 Objective-C++ 对象。一些 Objective-C++ 对象可以通过内部私有模块在 Swift 中访问(当然,它们的标头中没有 C++)。在这些对象的头文件中完成的唯一导入是系统库,如 Foundation 和 CoreGraphics。它们是使用旧
#import <Foundation/Foundation.h>
样式导入的,因为您不能@import Foundation;
在 Objective-C++ 对象中使用它们。在我们的 .modulemap 中,我们导入 sqlite 并在一些 Swift 文件中使用它。
这是模块映射文件。
framework module MyFramework {
umbrella header "MyFramework.h"
header "/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/sqlite3.h"
module Private {
umbrella header "MyFramework_Private.h"
export *
}
export *
module * { export * }
}
这是“MyFramework_Private.h”
#import <UIKit/UIGestureRecognizerSubclass.h>
#import <MyFramework/MyClass.h>
#import <MyFramework/MyOtherClass.h>
#import <MyFramework/AndSoOn.h>
问题是我无法使用顶级货架扩展中的 MyFramework。我在“MyFramework_Private.h”中收到我在那里导入的三个文件的编译错误(UIKit/UIGestureRecognizerSubclass.h
工作正常)。
我得到的错误是
Include of non-modular header inside framework module 'MyFramework.Private'
此错误仅在编译 Top Shelf 扩展的目标时发生。MyFramework 可以很好地编译(和运行)iOS 应用程序、iOS Today Extension 和 tvOS 应用程序。
我应该对此提出雷达还是有什么明显的我遗漏的东西?