iOS CocoaPods - как устранить ошибку "использование @import, когда модули отключены"?
Я ищу, как решить проблему "использования @import", когда модули отключены "при добавлении Google Analytics через cocoapods:
pod 'Google/Analytics', '~> 1.0.0'
link_with 'AppTarget', 'AppTargetTests'
В коде:
#import <Google/Analytics.h>
Я получаю эту ошибку в модуле:
"use of '@import' when modules are disabled"
Я проверил все проекты и вижу, что модули включены, наряду с другим предложением "Автоматически связывать фреймворки"
Я не могу переопределить этот импорт из-за этой ошибки:
Как я могу решить "использование @import ', когда модули отключены" при добавлении фреймворков через cocoapods в xCode6?
3 ответа
Я много гуглил, но сам взломал решение твоей проблемы. Очистка проекта, перестройка и т. Д. Не работали на меня.
Решение состоит в том, чтобы обернуть API в класс Какао и использовать этот класс в ваших импорте вместо оригинального.
- Создать класс, например
APAnalyticsTracker
, гдеAP
должен быть вашим общим префиксом приложения. Здесь у вас будет два файла:APAnalyticsTracker.m
а такжеAPAnalyticsTracker.h
- Импортировать
#import <Google/Analytics.h>
вAPAnalyticsTracker
и оберните оригинальную реализацию следующим образом (см. Gist для получения дополнительной информации): https://gist.github.com/vladignatyev/c240a1a4867b17894b10 - использование
APAnalyticsTracker.h
от.mm
файлы свободно. - Не забудьте включить модули, см. /questions/29853127/ios-cocoapods-kak-ustranit-oshibku-ispolzovanie-import-kogda-moduli-otklyuchenyi/29853131#29853131 комментарий от @barrast
Просто чтобы добавить ссылку на ответ Alex Stone в комментариях, вот текущая официальная спецификация Clang об отсутствии поддержки для @import
в C++:
В настоящее время нет синтаксиса C или C++ для объявлений импорта. Clang будет отслеживать предложение модулей в комитете C++.
В XCode просто установите для параметра "Включить модули (C и Objective-C)" значение "Да" в настройках сборки: