2

私はいくつかのObjective-C、特にiOS関連のものを学んでいます。UIViewController新しい、、などを生成するときはいつでも、生成されたファイルとファイルUITableViewControllerの両方に。が含まれます。ファイルからを削除しても、アプリケーションはコンパイルを続行します。ファイル内のこれの目的は何ですか?.h.m@interface@interface.m@interface.m

4

2 に答える 2

4

.mファイルの@interfaceは、クラス拡張子(名前のないカテゴリ)です。これがテンプレートに含まれ、コードの他の部分に公開したくない内部メソッドまたはivarの宣言を配置できるようになりました。

最新のObjective-Cランタイムの出現とclangの進歩により、適切に記述されたクラスは次のようになります。

1)ヘッダーにパブリックメソッドのみが含まれている

2)内部クラス拡張で宣言されたivarと内部メソッドを持っている

于 2012-07-29T19:33:43.873 に答える
3

技術的には、これは「クラス拡張」です(Objective-Cの紹介ドキュメント(の「拡張」セクション)を参照)。実際には、これを「プライベート」インターフェースとして使用することが一般的になっています(これは、それが存在するファイルにのみ「表示」されます)。Objective-Cは、他の人がこれらのメソッドを呼び出すのを阻止しませんが、それらを「見る」ことはありません(.hファイルをパブリックインターフェイス、この匿名カテゴリをプライベートインターフェイスと考えてください)。

@property公開したくないものを宣言するのに便利です。

于 2012-07-29T19:36:16.477 に答える