为什么我们通常在Objective C中导入.h文件但不导入.m文件?

时间:2012-08-01 12:25:36

标签: objective-c import

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

#import ClassName.h

通过.m文件导入.h文件有什么好处吗?

4 个答案:

答案 0 :(得分: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有任何访问或了解。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:-2)

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