我最近开始想知道为什么我们通常会在Objective C中导入.h文件而不是.m文件。
#import ClassName.h
通过.m文件导入.h文件有什么好处吗?
答案 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文件,它应该抛出错误。头文件包含导入类所需的所有相关数据,如变量,委托等