2

我最近开始想知道为什么我们通常在 Objective C 中导入 .h 文件而不是 .m 文件。

#import ClassName.h

导入 .h 文件而不是 .m 文件有什么好处吗?

4

4 回答 4

2

.m 文件是私有的,而 .h 文件是供其他类导入和使用的。例如,您的 .h 文件的一小部分可能如下所示:

@property (nonatomic) NSInteger myPublicInteger;

- (void)myPublicMethod;

另一方面,您的 .m 文件可能如下所示:

#import "MyClassNameHere.h"

@interface MyClassNameHere()
@property (nonatomic) NSInteger myPrivateInteger;
- (void)myPrivateMethod
@end

@implementation MyClassNameHere
@synthesize myPrivateInteger, myPublicInteger;

- (void)myPrivateMethod
{
    //some code here
}

- (void)myPublicMethod
{
    //some code here
}

导入 .h 文件并创建类实例的类将能够直接访问 myPublicInteger 并将消息发送到 myPublicMethod。但是,他们将无法访问或了解 myPrivateInteger 或 myPrivateMethod。

于 2012-08-01T12:35:00.373 回答
1

您导入 .h 文件是因为当您导入一个类时,您的目标是让该类知道所导入类的方法和实例变量,这就是您所需要的。您不需要您的班级了解导入班级的逻辑。我经常使用类这个词,但我希望这很清楚。

于 2012-08-01T12:35:11.063 回答
1

这取决于你想要什么。.h 文件中包含属性声明和公共方法。.m 文件包含所有实现。

通常,您导入 .h 文件是因为您只想访问类的属性和方法,而不是重新创建其方法。

于 2012-08-01T12:36:02.483 回答
-2

Xcode 不允许您导入 .m 文件,它应该会引发错误。头文件包含导入类所需的所有相关数据,例如变量、委托等

于 2012-08-01T12:35:55.747 回答