【问题标题】:Objective-C .h file not found未找到 Objective-C .h 文件
【发布时间】:2016-03-20 20:41:44
【问题描述】:

我昨天使用这些导入文件运行我的项目:

#import "sip/NgnSipPreferences.h"
#import "services/impl/NgnBaseService.h"
#import "services/INgnSipService.h"

但今天我遇到了错误。它说找不到'sip/NgnSipPreferences.h' 文件。但是当我删除 sip/ 使其变为 "NgnSipPreferences.h" 时,它就会被读取。

为什么会这样?头文件的来源路径我不想去掉,因为它太多了,我认为这是正确的方法。

我该如何解决这个问题?

【问题讨论】:

  • 嗯,这不是前缀标题。您可以在前缀文件中#import 这 3 个标头,无需在每个类中都导入它们。
  • 它们实际上是来自 idoubs 的代码。昨天它们非常好,现在我在每个 .h 文件中都遇到了错误。
  • 您是否检查过构建日志以了解哪些-I 选项正在传递给编译器?
  • 我还没有尝试过,但我会在我的 Xcode 完成更新后立即尝试。 (它突然更新)。我应该在构建日志中检查什么?
  • 您是如何配置这些文件的?使用 cocoapod 吗?或复制文件夹?如果您已复制文件夹,则在构建设置中设置用户标题搜索路径。

标签: objective-c header-files


【解决方案1】:
#import "sip/NgnSipPreferences.h"

正在从文件夹 sip/ 导入NgnSipPreferences.h,相对于导入它的文件。

所以你有 2 个解决方案,如果你不想更改 #import(通常最好按照你说的做,将导入/包含留在正确的位置):

  1. 将 .m 文件移动到适当的位置(sip/ 目录上方),或者
  2. 您将文件夹 above 添加到您的 Build_Settings 中的 HEADER_SEARCH_PATHS 参数中的 sip/ 目录(例如,如果您在根文件夹中有 sip/,只需添加 ${SRCROOT} 而无需递归 -在这种情况下,编译器肯定会找到你的头文件${SRCROOT}/sip/NgnSipPreferences.h)

注意:要获得对该主题的信心,请阅读Adding system header search path to Xcode

注意:如果它在昨天工作,但不是今天,如果你安装了 GIT 或其他版本控制工具,你可以很容易理解发生了什么,但有时 Xcode 没有正确清理所有缓存,所以你的问题可能会引起很多在你认为的日期之前。出于这个原因,不仅“清理”而且删除目录 DerivedData 非常有用! (当发生“奇怪”的事情时,我经常这样做......)

【讨论】:

  • 我恢复到我在 git 中的最后一个代码,但它仍然无法正常工作,所以我尝试删除目录 DerivedData 并将其放回原处,现在可以正常工作了!感谢您的建议!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-28
  • 1970-01-01
  • 2015-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多