【问题标题】:Why import .m file?为什么要导入 .m 文件?
【发布时间】:2016-06-01 06:10:36
【问题描述】:

我有一个源文件,实际上它是一个 Google API 库。

GTLCommon_Sources.m 上有这个代码:

#if defined(__has_feature) && __has_feature(objc_arc)
#error "This file needs to be compiled with ARC disabled."
#endif

#import "Objects/GTLBatchQuery.m"
#import "Objects/GTLBatchResult.m"
#import "Objects/GTLDateTime.m"
#import "Objects/GTLErrorObject.m"
#import "Objects/GTLObject.m"
#import "Objects/GTLQuery.m"
#import "Objects/GTLRuntimeCommon.m"
#import "Objects/GTLService.m"
#import "Objects/GTLUploadParameters.m"

#import "Utilities/GTLBase64.m"
#import "Utilities/GTLFramework.m"
#import "Utilities/GTLJSONParser.m"
#import "Utilities/GTLUtilities.m"

但是,尝试构建它,会导致 GTLCommon_SourcesGTLJSONParser 上出现重复符号。我尝试将源文件更改为#import "Utilities/GTLJSONParser.h" 而不是#import "Utilities/GTLJSONParser.m",并且重复符号错误消失了。

谁能告诉我为什么这个库会导入一个 .m 文件?在 AFAIK 中,我们总是导入 .h 文件。

【问题讨论】:

  • 您是否在您的项目中搜索到您只有这两个文件的一份副本?

标签: ios objective-c


【解决方案1】:

这只是构建所有源文件的便捷方式,无需将所有源文件都包含在您的项目中。见the documentation

不用链接到 GTL 框架,你可以编译 GTL 库 源直接进入您自己的项目。为此,请找到图书馆的 GTLCommon_Sources.m 和 GTLCommon_Networking.m 文件,然后将 文件到项目的窗口中。

然后将库的源文件夹添加到 Header Search Paths 条目 项目的构建设置:源、源/对象、 源/实用程序,Deps/gtm-session-fetcher/源, Deps/gtm-oauth2/Source、Deps/gtm-oauth2/Source/Touch(或 Deps/gtm-oauth2/Source/Mac)。

为此,请不要将任何其他来源(GTLBatchQuery.m 等)添加到您的项目中。

【讨论】:

猜你喜欢
  • 2017-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-13
  • 2020-03-19
  • 1970-01-01
相关资源
最近更新 更多