У меня есть быстрый класс, определенный в структуре, которая используется из приложения obj-c.Swift не создает декларацию для протокола
Сгенерированный заголовок -Swift.h содержит быстрые классы, отмеченные с помощью @objc, но есть одно свойство, из-за которого компиляция не выполняется.
Это свойство определяется как это в быстром коде:
public var storageClass : StorageProtocol.Type = UserDefaultStorage.self
и так генерируемый Obj-C свойство выглядит как этот
@property (nonatomic) Class <StorageProtocol> __nonnull storageClass;
Но Xcode не принимает символ «StorageProtocol» здесь , потому что передняя декларация "@protocol StorageProtocol;" пропал, отсутствует.
Если добавить новый вар, определенный как это:
public var storage : StorageProtocol? = nil
Переднее декларация добавляется поверх класса, которые определяют эти свойства и -Swift.h компиляцию успеха.
Таким образом, это похоже на ошибку в гене -Swift.h, но есть ли другой способ принудительного форвардного объявления без использования фиктивного var?
Вы тестировали это с помощью новейшего Xcode 7.2? Я пытался использовать несколько различных конфигураций, чтобы это произошло, и пока не удалось воспроизвести. Можете ли вы воспроизвести в небольшом проекте? –
Я загружаю xcode 7.2, поэтому я смогу проверить. – LiohAu
Все еще получаю ошибку даже с Xcode 7.2 – LiohAu