私は最近、Objective C で通常 .m ファイルではなく .h ファイルをインポートする理由を疑問に思い始めました。
#import ClassName.h
.m ファイルよりも .h ファイルをインポートする利点はありますか?
私は最近、Objective C で通常 .m ファイルではなく .h ファイルをインポートする理由を疑問に思い始めました。
#import ClassName.h
.m ファイルよりも .h ファイルをインポートする利点はありますか?
.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ファイルには、プロパティ宣言とパブリックメソッドが含まれています。.mファイルにはすべての実装があります。
通常、.hファイルをインポートするのは、クラスのメソッドの再作成ではなく、クラスのプロパティとメソッドへのアクセスのみが必要だからです。
.h ファイルをインポートするのは、クラスをインポートするときの目標は、インポートされたクラスのメソッドとインスタンス変数についてクラスに知らせることであり、必要なのはそれだけだからです。インポートされたクラスのロジックをクラスが知る必要はありません。私はクラスという言葉をよく使いましたが、これが明確であることを願っています。
Xcodeでは、.mファイルをインポートできません。エラーが発生します。ヘッダーファイルには、変数、委任など、クラスのインポートに必要なすべての関連データが含まれています。