2

私は最近、Objective C で通常 .m ファイルではなく .h ファイルをインポートする理由を疑問に思い始めました。

#import ClassName.h

.m ファイルよりも .h ファイルをインポートする利点はありますか?

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ファイルには、プロパティ宣言とパブリックメソッドが含まれています。.mファイルにはすべての実装があります。

通常、.hファイルをインポートするのは、クラスのメソッドの再作成ではなく、クラスのプロパティとメソッドへのアクセスのみが必要だからです。

于 2012-08-01T12:36:02.483 に答える
1

.h ファイルをインポートするのは、クラスをインポートするときの目標は、インポートされたクラスのメソッドとインスタンス変数についてクラスに知らせることであり、必要なのはそれだけだからです。インポートされたクラスのロジックをクラスが知る必要はありません。私はクラスという言葉をよく使いましたが、これが明確であることを願っています。

于 2012-08-01T12:35:11.063 に答える
-2

Xcodeでは、.mファイルをインポートできません。エラーが発生します。ヘッダーファイルには、変数、委任など、クラスのインポートに必要なすべての関連データが含まれています。

于 2012-08-01T12:35:55.747 に答える