13

私は今日、知識を求めています。

私は仕事のためにいくつかのコードに取り組んでいます.レビューの後、私は完全なBrain Fartを持っていて、なぜobjective-cの.hと.mファイルで何かをしたのか思い出せません.

  1. なぜファイルをインポートして .h ファイルでメソッド名を宣言するのか疑問に思っていました。(加工関係なのはわかるが、詳しくは思い出せない)
  2. 場合によっては、.h ファイルではなく、.m ファイルにファイルを直接インポートすることがあるのはなぜですか。
  3. .h ファイルでメソッドを宣言するとき、使用しているクラスやライブラリが必要な機能を実行しないため、これを行っていますか?
  4. どのライブラリにも存在しないメソッド、または .m ファイル内の .h ファイルを宣言したことはありませんか?

皆様ありがとうございました。

4

2 に答える 2

26
  1. クラスのパブリック部分とプライベート部分を分離するために使用されます。.m ファイルはimplementation. それはすべてのロジックが行き、すべてのデータが処理されて保存される場所などです..hファイルはinterfaceそのクラスの.hファイルです。これは文字通り、独自のクラスの API のようなものです。他のクラスにそれを使用する方法とそれとのインターフェース方法を伝えます。

  2. ファイルでクラスを参照するときにクラスをインポートします。インターフェイスで何か (つまり、プロパティ) を参照する場合は、それを .h にインポートします。実装でのみ参照する場合は、.m にインポートします。

  3. .h で宣言されたメソッドはすべてそこにあるため、他のクラスはそれを実行できることがわかります。つまり、それらはパブリック メソッドです。宣言を削除してから、そのメソッドを呼び出してください。警告が表示されます。

  4. いいえ、これは意味がありません。プログラムの作成の途中で、テスト目的で宣言した場合を除きます。

于 2013-07-09T21:12:45.200 に答える
5
  1. .h ファイルはクラスのパブリック インターフェイスであるため
  2. インポートを .m ファイルに配置すると、それらが非公開になり、依存関係が .h ファイルから除外されるためです (過度の依存関係のインポートと潜在的な循環を防ぎます)。
  3. そのサービスを提供していることを公に表明するために行っている
  4. 存在しない場合は使用できません(ただし、実際に使用する前に、存在することを望んでいるものを宣言して確認することはできます)。

2 のボーナス エクストラ@class。これにより、依存関係の影響が最小限に抑えられます。

于 2013-07-09T21:10:28.960 に答える