13

我今天正在寻求知识。

我正在编写一些工作代码,经过审查,我有一个完整的 Brain Fart,不记得为什么我们在 Objective-c 中使用 .h 和 .m 文件做某事

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

谢谢大家,我希望一切都有意义。

4

2 回答 2

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

  2. 当您在文件中引用它时,您导入了一个类。如果您在界面中引用某些内容(即属性),那么您将其导入到 .h 中。如果您只在实现中引用它,那么您将它导入到 .m 中。

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

  4. 不,这没有意义。除非您在编写程序并声明它用于测试目的的过程中的一部分。

于 2013-07-09T21:12:45.200 回答
5
  1. 因为 .h 文件是类的公共接口
  2. 因为将导入放入 .m 文件使它们成为私有的,并将依赖项排除在 .h 文件之外(防止过度依赖项导入和潜在的循环)
  3. 您这样做是为了公开声明您提供该服务
  4. 你不应该,如果它不存在你就不能使用它(尽管你可以声明你希望存在的东西并在你实际尝试使用它们之前检查它们)

2 的额外奖励。在您的 .h 文件中,您应该努力尽可能减少导入数量(仅是超类和您公开实施的任何协议)并@class用于其他所有内容。这最大限度地减少了依赖性影响。

于 2013-07-09T21:10:28.960 回答