4

カテゴリを使用して Objective-C クラスの実装を複数の@implementationブロックに分割した場合、iOS アプリの結果のバイナリが大きくなったり、パフォーマンスに影響したりすることはありますか?

どうやら、実行時にクラスのカテゴリの詳細を取得することはできませんか? . では、結果のバイナリは、他のすべてが等しいと仮定して、カテゴリの有無にかかわらず同一であるべきではありませんか?

バックグラウンド

UIViewControllerかなり複雑になっているカスタム サブクラスがあります。

iOS Developer Library : Objective-C によるプログラミング : カテゴリ

メソッドを既存のクラスに追加するだけでなく、カテゴリを使用して複雑なクラスの実装を複数のソース コード ファイルに分割することもできます。たとえば、幾何学的計算、色、グラデーションなどが特に複雑な場合は、カスタム ユーザー インターフェイス要素の描画コードを別のファイルに配置して、残りの実装に配置することができます。

#pragma markカテゴリのもう 1 つの優れた点 (たとえば sと比較して) は、Xcode では@implementationブロック全体をコードで折りたたむことができることです (ただし、2 つ#pragma markの の間のコードは折りたためません)。これは、メイン クラスと同じファイルにカテゴリ (オプションで折りたたむ) を保持する場合に便利です。

4

3 に答える 3

10

リンカは、可能な場合、クラスとカテゴリをマージします。ビルド時にクラスとそのカテゴリがすべて同じ実行可能ファイルにリンクされている場合、コストはゼロです。

于 2013-10-25T22:39:08.503 に答える