2015-12-10 3 views
2

У меня есть быстрый класс, определенный в структуре, которая используется из приложения 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?

+0

Вы тестировали это с помощью новейшего Xcode 7.2? Я пытался использовать несколько различных конфигураций, чтобы это произошло, и пока не удалось воспроизвести. Можете ли вы воспроизвести в небольшом проекте? –

+0

Я загружаю xcode 7.2, поэтому я смогу проверить. – LiohAu

+0

Все еще получаю ошибку даже с Xcode 7.2 – LiohAu

ответ

0

Я не нашел другого способа, кроме использования манекена ...