問題タブ [circular-reference]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - jQuery.data がメモリ リークを引き起こす可能性はありますか?
次のコードはメモリ リークを引き起こしますか。
jQuery のドキュメントによると、このdata
関数を使用するとメモリ リークが回避されます。以下が安全かどうかを確認するのに役立ちます。
javascript - this.constuctor = を設定すると、循環参照/メモリリークが発生します
次のコードは機能しますが、循環参照やメモリ リークが発生するリスクはありますか?
jquery - .bind を使用しているオブジェクトそのものへの参照を渡すと、循環参照が発生します
jQuery オブジェクトがあり、.bind()
メソッドを使用してそのオブジェクトにイベントを割り当てています。ただし、次のように、オブジェクト自体への参照も bind メソッドに渡しています。
これが「実際に」循環参照を引き起こすかどうか知りたいですか?
python - 循環参照のあるオブジェクトの破棄
私のデザインは次のとおりです。
__main__
参照a
a
参照b
b
参照a
a
から作成され、廃棄されます__main__
したがってa
、b
循環参照があります。しかし、私は両方を好み、処分しdel a
たいと思います。a
b
多くの場所で、コンテキストマネージャーを使用するためのアドバイス、具体的にはのwith
代わりにステートメントを目にし__del__()
ます。ただしwith
、ローカルスコープでの開始と終了のすべての例(特定のメソッドなど)
これはエレガントに実行できますwith
か?
代替手段は何ですか?
c# - 2 つのインターフェイスのインスタンスは相互に参照できますか?
C# の使用
コードは正常に動作し、循環参照の問題は発生していませんか?
python - sys.exc_info() からのトレースバック オブジェクトを扱うときの適切な注意と安全
sys.exc_infoのドキュメントに、トレースバック オブジェクトを扱う際には注意するように記載されていることは承知していますが、いくつかのケースがどれほど安全かどうかについてはまだ不明です。さらに、ドキュメントには「警告: これを行わないでください!」と記載されており、その直後に「注: 実際には問題ありません」と記載されているため、さらに混乱します。
いずれにせよ、ドキュメントと「Python で sys.exc_info() トレースバックを明示的に削除する必要があるのはなぜですか?」 (Alex Martelli の回答) は、それらに割り当てられたトレースバック値を参照する唯一のローカル変数を暗示しているようです。問題。
これにより、いくつかの質問が残ります。
- このコンテキストでの「ローカル変数」とは、正確には何を意味するのでしょうか? 私は用語に苦労していますが、これは関数で作成された変数のみを意味するのでしょうか、それとも関数パラメーターによって作成された変数でもありますか? スコープ内の他の変数、たとえば globals や self はどうですか?
- クロージャーは、トレースバックの潜在的な循環参照にどのように影響しますか? 一般的な考えは次のとおりです。クロージャーは、それを囲む関数が参照できるすべてのものを参照できるため、クロージャーへの参照を含むトレースバックは、かなりの量を参照することになります。より具体的な例を思いつくのに苦労していますが、内部関数、sys.exc_info() を返すコード、スコープ内の高価で短命のオブジェクトの組み合わせです。
これを書いているときに、自分の発言を信じたり信じなかったりすることを何度も考えてきたので、私の結論や仮定のどこが間違っているか教えてください:)。
私の具体的な例への回答を求めていますが、一般的なアドバイス、知識、またはより難解な状況でトレースバックを安全に処理する方法に関する戦争の話も求めています (たとえば、ループを実行する必要があり、トレースバックを蓄積したい場合)。発生した例外、新しいスレッドを生成し、発生した例外を報告する必要がある、クロージャとコールバックを作成し、発生した例外を返信する必要がある、など)。
例 1: エラー処理を行う内部関数
トレースバックも含まれているため、Handled()
閉鎖によって発生した例外が参照error_queue
され、循環参照が発生しますか? error_queue
からのトレースバックの削除error_queue
(つまり、呼び出し.get()
) は、循環参照を排除するのに十分ですか?
例 2: exc_info のスコープ内にある長寿命のオブジェクト、または exc_info を返す
の発生した例外にAlphaSub()
は への参照がexpensive_object
あり、expensive_object
キャッシュされているため、トレースバックは消えませんか? もしそうなら、どうすればそのようなサイクルを断ち切ることができますか?
または、スタック フレームをexc_info
含み、Alpha
スタックAlpha
フレームに への参照が含まれているためexc_info
、循環参照が発生します。もしそうなら、どうすればそのようなサイクルを断ち切ることができますか?
objective-c - これは循環参照ですか?
CCSprite
と呼ばれるから継承するクラスがありGameObject
ます。ActionDispatcher
から継承するというシングルトンもありますNSObject
。
ActionDispatcher sharedActionDispatcher's
仕事は、要求されたときに a を返すことであり、これを行うメソッドには、型(またはそのサブクラス)CCActionInterval
である要求オブジェクトへの参照が必要です。GameObject
ただし、 がGameObject
これを要求できるようにするには、 を参照する必要がありますActionDispatcher
。そのため#import "GameObject.h"
、ActionDispatcher
ヘッダーに a とヘッダーに a#import "ActionDispatcher"
がありGameObject
ます。
エラーが発生します:への参照を受け取るメソッドExpected ')' before 'GameObject'
内で.ActionManager
GameObject
編集:以下の受け入れられた回答に従って、これをどこで修正したかを示すコメントを追加しました。
javascript - 循環参照でオブジェクトを保存するには?
循環参照を持つオブジェクトをローカルに保存したい。私のオプションは何ですか?
最初に考えたのは HTML5 ローカル ストレージを使用することでしたが、循環参照のためにこのオブジェクトを文字列化できません。
具体的には、現在の選択の DOMSelection オブジェクトを保存しようとしています。
例:
stringify を機能させる唯一の方法は、次のように特定のオブジェクトを無視することです。
しかし、これにより、かなり空の DOMSelection オブジェクトが残り、必要なものには十分ではありません。
このオブジェクトを保存する他の方法はありますか? 唯一の要件は、モバイル サファリで動作することです。それ以外は何でも構いません。解決策は、javascript または jquery (または必要に応じて他の js lib) のいずれかです。
ご協力いただきありがとうございます。
dependency-injection - 直接依存関係のみを注入する場合に Google Guice で循環参照を防ぐ方法
Google Guice でのベスト プラクティスは、直接的な依存関係のみを注入することです。しかし、次のコード例を使用すると、クラスCustomerで account のインスタンスを作成するにはどうすればよいでしょうか?
問題は、Guice が常にprovidePurchasingAccount()を呼び出して新しいアカウントを取得しようとするため、循環参照が発生することです。