Objective-c中的.h和.m文件

时间:2013-07-09 21:07:07

标签: objective-c

我今天正在寻求知识。

我正在研究一些工作代码,经过审核后我有一个完整的脑屁并且不记得为什么我们用objective-c中的.h和.m文件做某事

  1. 我想知道为什么我们要导入文件并在.h文件中声明方法名称? (我知道它与处理有关,但不记得细节)
  2. 为什么我们有时会直接将文件导入.m文件,而不是在某些情况下导入.h文件。
  3. 当您在.h文件中声明一个方法时,您是否这样做是因为您使用的类和/或库不执行某个功能,您也需要它们吗?
  4. 是否曾经出现过您在.m文件中声明任何库或.h文件中不存在的方法的情况?
  5. 谢谢大家,我希望一切都有意义。

2 个答案:

答案 0 :(得分:18)

  1. 它用于分隔类的公共部分和私有部分。 .m文件是implementation。它是所有逻辑的所在,所有数据都被处理和存储等...... .h文件是该类的interface。它实际上就像是你自己班级的API。它告诉其他类如何使用它以及如何与它进行交互。

  2. 在文件中引用类时,可以导入该类。如果您在界面中引用某些内容(即属性),则将其导入.h。如果您只在实现中引用它,则将其导入.m。

  3. .h中声明的任何方法都在那里,以便其他类知道它们可以运行它。即他们是公共方法。尝试并删除声明,然后调用该方法。你会收到警告。

  4. 不,这没有意义。除非你是编写程序并将其声明用于测试目的的一部分。

答案 1 :(得分:3)

  1. 因为.h文件是类的公共接口
  2. 因为将导入放入.m文件会使它们变为私有并将依赖项保留在.h文件之外(防止过多的依赖项导入和潜在的循环)
  3. 您这样做是为了公开声明您提供该服务
  4. 你不应该,如果它不存在你就不能使用它(虽然你可以声明你希望存在的东西并在你真正尝试使用之前检查)
  5. 额外的额外奖励2.在.h文件中,您应尽力使最小数量的导入成为可能(只是超级类和您公开实施的任何协议),并使用@class用于其他所有内容。这最大限度地减少了依赖性含义。