Objective-Cクラスにメソッドを追加することは、そのクラスのメモリ使用に影響しますか?カテゴリにはどのようなメモリ使用率が影響しますか?
答えて
クラスのカテゴリの影響
Objective-Cランタイムは、最終的にカテゴリが含まれてあなたのインスタンスのクラス階層を生成することによって、あなたのカテゴリのメソッドを称えます。カテゴリを実装しているクラスのインスタンスは、追加のサブクラスよりも高価でなく、メモリを要求しません。カテゴリメソッドは実行時に適用されますが、メソッドがクラスに追加されると、そのクラスで定義されたメソッドと変わりありません。これらのオブジェクト間のメッセージ送信のための機構はすべて同じです。
カテゴリは、コードの設計と懸念事項の分離に関するものです。既存のCocoaパターンを使用して、メモリの最適化を考えずに、クラスの設計に役立つツールとして簡単に使用できます。
ランタイム環境上のカテゴリーの全体的な影響
@NSResponderはさらに良い点を思い出させます。カテゴリは実行時にロードされるため、使用されるまでロードされません。非常に大きなクラスまたはクラスクラスタには、別のカテゴリの上位レベルのフレームワーク用のコードが含まれている場合があります。上位レベルのフレームワークを完全に回避すると、追加するカテゴリをロードする必要はありません。たとえば、クラスはFoundationレイヤーで正常に動作し、次にCocoaレイヤーから使用されたときに余分な機能をロードします。だから、これはスペースを節約するものと考えることができ、それは大きな画像のための良い答えです。
あなたが単にいくつかのクラスを書くのであれば、これはメモリを自分で最適化するための主な手段ではありません。複数のレイヤーにまたがる大量のコードを記述している場合を除き、通常は、それらを自分で使用するか、他のオブジェクトで使用できるようにするためにカテゴリを宣言します。 Objective-CとCocoaフレームワークは、この目的を十分に果たすコード束縛を遅延ロードするための良い機械を持っています。
メモリフットプリントのカテゴリの利点は、アプリケーションが使用するまでカテゴリを読み込まないことです。 NeXTSTEPのこの日の正式な例は、ビューの印刷コードをカテゴリに入れることでした。
- 1. スパース行列はどのようにメモリ使用量に影響しますか?
- 2. 未使用のJavascriptオブジェクトメソッドはどのようにメモリ使用量に影響しますか?
- 3. Spark DriverのメモリはExecutorリソースにどのように影響しますか?
- 4. Javaのストリームはどのようにメモリ消費に影響しますか?
- 5. データベースにはどのような影響がありますか?
- 6. 変数の名前付けは、アプリケーションのメモリ使用量にどのような影響を与えますか?
- 7. Socket_select:入力には影響しますが、正確にはどのように影響しますか?
- 8. grailsの一時的なプロパティはアプリケーションのメモリ使用に影響しますか?
- 9. requireステートメントはメモリ使用量とパフォーマンスにどのような影響を与えますか
- 10. ファイルサイズがパフォーマンスにどのように影響しますか?
- 11. BlazeDSのオープンソースはAdobe Flexの採用率にどのような影響を与えましたか?
- 12. java stream.peek()はどのようにバイトコードに影響しますか?
- 13. estimatedRowHeightはどのようにパフォーマンスに影響しますか?
- 14. Object.observe()はどのようにパフォーマンスに影響しますか?
- 15. innodb_log_file_sizeはどのようにパフォーマンスに影響しますか?
- 16. カスタムモデルバインダーはテストにどのように影響しますか?
- 17. オブジェクトのプロパティ名の長さがメモリ使用量に影響しますか?
- 18. 'java'バイナリにはどのような環境変数が影響しますか?
- 19. Gitではどのような設定がユーザ名に影響しますか?
- 20. console.logsがシングルページアプリケーションの/タブのメモリとパフォーマンスに影響しますか?
- 21. グラフアイテムのレイアウトにどのように影響しますか?
- 22. $(これ)は$([セレクタ])のようなパフォーマンスに影響しますか?
- 23. 悪影響がgensimでのモデルのパフォーマンスにどのように影響しますか?
- 24. compareToのオーバーライドにはどのような影響がありますか?
- 25. クラスタサイズの最適化にはどのような影響がありますか?
- 26. ProGuardでは、テスト戦略にどのような影響がありますか?
- 27. ロールバックトランザクションでループを使用してデータにどのように影響するか
- 28. スタティックネストされたクラスのパフォーマンスとメモリにどのような影響がありますか
- 29. EnableViewStateはGridView上でどのようなコントロールに影響しますか?
- 30. System.out.println()はコード効率に影響しますか?
残っている細部があります。カテゴリ内のコードは、実際に使用されるまでメモリにロードされません。 – NSResponder
それは本当です。私はそれを書き留めました。 – keparo
コンテキストの場合は、NSDateにカテゴリを追加しました。どのようにメモリが集中しているのですか? – Moshe