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类中,并在导入中使用此类而不是原始类。
- 创build类,例如
APAnalyticsTracker
,其中AP
应该是您的常用应用程序前缀。 这里你将有两个文件:APAnalyticsTracker.m
和APAnalyticsTracker.h
- 在
APAnalyticsTracker
导入#import <Google/Analytics.h>
并像这样包装原始实现(更多信息参见Gist): https :APAnalyticsTracker
- 从
.mm
文件中免费使用APAnalyticsTracker.h
。 - 请记住启用模块,请参阅https://stackoverflow.com/a/33125158/882187来自@barrast的评论
只需添加一个对@Alex Stone的回答即时评论的引用,下面是关于在C ++中不支持@import
官方clang规范 :
目前,导入声明没有C或C ++语法。 Clang将跟踪C ++委员会中的模块提案。
在Xcode中,只需在Build Settings中将Enable Modules(C和Objective-C)设置为Yes: