Я пытаюсь написать расширение Top Shelf для нашего приложения tvOS. У нас есть частная платформа, которая обрабатывает весь наш низкоуровневый код данных.
Мы используем Xcode 7.1 Beta 2.
Пара замечаний о фреймворке…
Он использует только безопасные для расширений 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 из расширения Top Shelf. Я получаю ошибку компиляции в «MyFramework_Private.h» для трех файлов, которые я туда импортирую (UIKit/UIGestureRecognizerSubclass.h
работает нормально).
Ошибка, которую я получаю,
Include of non-modular header inside framework module 'MyFramework.Private'
Эта ошибка возникает только при компиляции цели для расширения Top Shelf. MyFramework отлично компилируется (и работает) для приложения iOS, расширения iOS Today и приложения tvOS.
Должен ли я подать радар на это, или есть что-то очевидное, что я упускаю?