我最近开始想知道为什么我们通常在 Objective C 中导入 .h 文件而不是 .m 文件。
#import ClassName.h
导入 .h 文件而不是 .m 文件有什么好处吗?
我最近开始想知道为什么我们通常在 Objective C 中导入 .h 文件而不是 .m 文件。
#import ClassName.h
导入 .h 文件而不是 .m 文件有什么好处吗?
.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。
您导入 .h 文件是因为当您导入一个类时,您的目标是让该类知道所导入类的方法和实例变量,这就是您所需要的。您不需要您的班级了解导入班级的逻辑。我经常使用类这个词,但我希望这很清楚。
这取决于你想要什么。.h 文件中包含属性声明和公共方法。.m 文件包含所有实现。
通常,您导入 .h 文件是因为您只想访问类的属性和方法,而不是重新创建其方法。
Xcode 不允许您导入 .m 文件,它应该会引发错误。头文件包含导入类所需的所有相关数据,例如变量、委托等