16

クラスのメイン実装ファイルの Objective-C クラス拡張機能についてはよく知っていますが、新しい Xcode 4.4 の「Objective-C クラス拡張ヘッダー」ファイル テンプレートが何を意図しているのか知りたいですか?

4

2 に答える 2

23

クラス拡張はメイン@implementationブロックに実装する必要がありますが、宣言はどこでもかまいません。

拡張機能は、パブリックにしたくないものをクラス インターフェイスに追加するために使用されるため、パブリック クラス宣言ヘッダーに配置することはできません。

よく知られている実装の同じファイルで拡張を宣言することは、拡張がクラス実装自体によってのみ使用される場合に使用されます。

テンプレートの目的である別のヘッダーで拡張機能を宣言すると、フレームワークを開発するときに役立ちます。拡張ヘッダーは、パブリック ヘッダーのセットの一部にはなりませんが、フレームワークの複数の実装ファイルによって内部的に使用されます。

クラスのプライベートではなく、フレームワークのプライベートと考えることができます。

于 2012-08-11T09:16:24.577 に答える
9

もう 1 つの理由は、単体テストを使用してクラスをテストする場合にクラス拡張ヘッダー ファイルが役立つことです。別のヘッダー ファイルにクラス拡張を配置すると、必要なクラスの実装にプライベート メソッドを含むヘッダーをインポートできます。これらのプライベート メソッドと、クラスのテストに使用する単体テスト ファイルに...

私の意見では、これは Objective-C への非常に良い追加 (単体テストでプライベート メソッドをテストする機会) であり、現時点では Java の JUnit では実行できないことです。

于 2012-08-11T09:30:08.083 に答える