/ / Включете немодулна заглавка, когато включвате рамка на трета страна в Цел С - цел-с, включвайте, заглавни файлове

Включете немодулирания хедър, когато включите рамката на трети страни в Цел С - обектив-в, включително заглавни файлове

Трябва да разкрия метод в моя заглавен файл, за да приема параметър от тип, който идва от рамка на трета страна. Методът мъниче изглежда така:

- (void) onComplete:(RETURN_CODE (^)(BOOL isSuccess, NSData* tags))onComplete;

RETURN_CODE е typedef enum в рамките на трета страна, но това не е типичното определение на enum. Изглежда така:

typedef enum {
RETURN_CODE_DO_SUCCESS = 0,
RETURN_CODE_ERR_DISCONNECT = 0xFF01,
RETURN_CODE_ERR_CMD_RESPONSE = 0xFF02,
// continued...
}

Когато се опитвам да го импортирам в моя заглавен файл, получавам грешката „Включване на немодулна заглавка в рамките на рамков модул“

Разбрах се, преди да използвам протокол иклас преди, но не съм сигурен как да заобиколя това за типа RETURN_CODE. Вече имам опцията „Разрешаване на немодулни включва“, зададена на Да. И моята рамка, и рамката на трета страна са включени в мостово заглавие в моя бърз проект.

Моята рамкова структура е такава, че A.h внася C.h, A.m внася B.h, и B.h внася C.h. Не мисля, че това трябва да е проблем?

Тъй като това е трета страна, която аз съмвнасяне, не съм сигурен дали мога да го променя целевото членство. Той вече е включен в списъка Link Binary With Libraries. За lulz го плъзнах и го пуснах в секцията Public Public headers, но това не помогна.

Опитах се да направя файл с карта на модул, но това също не промени нищо. Не съм сигурен дали съм го създал правилно, просто получих същата грешка, както преди, дори след премахване на мостовата заглавка.

Отговори:

1 за отговор № 1

Опция 1: Отидете на заглавния файл и го променете на обществен.

Промяна на заглавния файл

Вариант 2: Отидете на Проект> Настройки за изграждане> Apple LLVM 9.0 - Език - Модули> Всички немодулни включени в рамкови модули = ДА

Променете настройките за изграждане