5

Objective-C で、クラス メソッドのみを含む (メンバー変数やインスタンス メソッドを含まない) クラスがある場合、クラスのヘッダー ファイル (.h) でクラス メソッドを定義し、.m ファイルの作成をスキップできますか?

4

1 に答える 1

5

できますが、基本的にはすべきではありません。@implementation をヘッダーに入れることはできますが、これは慣習に反するものであり、C++ や他の言語と同様に、意図しない副作用が生じる可能性があります (たとえば、ヘッダーが # になる前に何が #include されるかを制御できません)。含まれているため、適切なグローバル名前空間があるかどうかを確認できません)。

Objective-C でのベスト プラクティスは、ドキュメントと共にヘッダー ファイルに宣言のみを保持することです。ドキュメントは一般的に非常に冗長であるため (適切に記述されている場合)、ヘッダーには既にかなりの量のコンテンツが含まれているため、その上にコードを追加するのは多すぎます。

クラスであろうとインスタンスであろうと、Objective-C メソッドはインライン化されないことにも注意してください。これが、コードをヘッダー ファイルに入れることが C/C++ で比較的一般的な方法である大きな理由の 1 つです。もちろん、Objective-C ヘッダー ファイルに静的関数を配置することもできます。そのため、そのようにコードを実装することもできますが、それは望ましくない設計になる可能性があります。 .

于 2012-12-09T17:37:30.147 に答える