iOS的CocoaPods – 如何解决“在模块被禁用时使用'@import'错误?

我在通过cocoapods添加Google Analytics时寻求如何解决“禁用模块时使用'@import':

pod 'Google/Analytics', '~> 1.0.0' link_with 'AppTarget', 'AppTargetTests' 

在代码中:

 #import <Google/Analytics.h> 

我在一个pod中得到这个错误:

 "use of '@import' when modules are disabled" 

在这里输入图像说明

我检查了所有的项目,并看到模块已启用,以及其他build议“自动链接框架”

在这里输入图像说明 在这里输入图像说明

由于此错误,我无法覆盖此导入: 在这里输入图像说明

在xCode6中通过cocoapods添加框架时,如何解决“禁用模块时使用@import”?

我GOOGLE了很多,但自己的黑客解决您的问题。 清理项目,重build等不适合我。

解决scheme是将API包装到Cocoa类中,并在导入中使用此类而不是原始类。

  1. 创build类,例如APAnalyticsTracker ,其中AP应该是您的常用应用程序前缀。 这里你将有两个文件: APAnalyticsTracker.mAPAnalyticsTracker.h
  2. APAnalyticsTracker导入#import <Google/Analytics.h>并像这样包装原始实现(更多信息参见Gist): https : APAnalyticsTracker
  3. .mm文件中免费使用APAnalyticsTracker.h
  4. 请记住启用模块,请参阅https://stackoverflow.com/a/33125158/882187来自@barrast的评&#x8BBA;

只需添加一个对@Alex Stone的回答即时评论的引用,下面是关于在C ++中不支持@import官方clang规范 :

目前,导入声明没有C或C ++语法。 Clang将跟踪C ++委员会中的模块提案。

在Xcode中,只需在Build Settings中将Enable Modules(C和Objective-C)设置为Yes:

在这里输入图像说明