問題タブ [strong-references]
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.
python-2.7 - 弱い参照を強い参照に変更するには?
RPyC を使用してクライアントに接続し、パラメーター オブジェクトを使用して Service 公開メソッドを呼び出します。公開されたメソッドからこのオブジェクトを取得して何かをしたいのですが、このオブジェクトは弱参照されており、その時点でそのデータにアクセスしたい: オブジェクトが "弱参照オブジェクトではない" ことを示す ReferenceError を取得します。もはや存在する」
ガベージ コレクションからの弱参照でオブジェクトを保護するにはどうすればよいですか? 強く参照されるように変更するにはどうすればよいですか?
server.py (メッセージの送信)
client.py (データを処理してキューに入れる)
other.py (キューの読み取り)
swift - 閉鎖の強い参照サイクルについて混乱していますか?
私の質問は: クロージャーが Lazy と宣言されているのはなぜですか? クロージャーで認識されていないことに関係があることはわかっていますが、作成されていないメソッドself
の場合も同じではありませんか?init
self
第二に、このコード例の強い参照サイクルは正確にはどこですか?それself
は を強く参照してasHTML
いますか?もしそうなら、サイクルを引き起こす強い参照の 2 番目の部分はどこですか?
第三に、定数が値をtext
変更できないのに、定数プロパティがオプションである理由は何ですか?nil
nil
最後に、メソッドがユーザーから送信されたパラメーターを受け入れるために使用されている場合、text: String? = nil
メソッドにパラメーターがあるとはどういう意味ですか?init
init
この長い質問で申し訳ありませんが、クロージャの強参照サイクルについて混乱しています....クラスプロパティとクラスインスタンス間の強参照サイクルは理解していますが。
ios - この Objective-C コードは強力な参照サイクルを作成しますか?
私は他の誰かの iOS プロジェクトで作業しています。ARC は有効になっています (私の知る限り、常に有効になっています)。コードには、いくつかのビュー コントローラーのインスタンスを作成し、そのデリゲートを自分自身に設定してから表示するボタン プレス ハンドラーが散らばっています。
MyViewController は、音楽キーを選択するためのスピン ウィジェットを表示します。選択したら、ユーザーは選択したキーを使用して音楽を作成するために押し戻します。これらは唯一のユーザー インタラクションであり、バックグラウンド プロセスなどはありません。
MyViewController.h ファイルでは、デリゲートは次のように宣言されています。
2 つの質問があります。
- 元の作成者が、ボタンを押すたびに MyViewController の新しいインスタンスを作成することを選択したのはなぜでしょうか?
- そのような各インスタンスの所有者は誰ですか? 【いつ】壊れるの?デリゲートへの強い参照を保持しているため、現在の実装は [ボタンを押すたびに] 強い参照サイクルを作成していますか?
私自身の本能は、デリゲートにプライベートな MyViewController * プロパティを作成することです。このプロパティは、最初にボタンを押したときにのみ読み込まれます。次に、一般的な推奨に従って、MyViewController のデリゲート プロパティを強力ではなく弱くします。しかし、私が言ったように、現在の実装は非常にユビキタスなので、最初にそれがどのように機能するかを理解せずに何かを変更するのは気が進まない.
どんな助けでも大歓迎です。
ios - 非同期呼び出しまたは静的呼び出しで強力な保持サイクルを実現するにはどうすればよいですか?
強力な保持サイクルが可能であり、使用する必要がある場合をどのように認識できるかを理解しようとしています[weak/unowned self]
。不必要な使用でやけどを負い、[weak/unowned self]
使用する機会を与える直前に自己の割り当てが解除されました。
たとえば、以下はself
クロージャーで参照する非同期ネットワーク呼び出しです。呼び出し自体を変数に保存せずにネットワーク呼び出しが行われるため、ここでメモリリークが発生する可能性はありますか?
次に、NSNotificationCenter を使用した別の例を示します。ここでは、後で非同期に呼び出しを行うことができます。
私の質問は、強力な保持サイクルが可能なのはどのような場合ですか? クロージャーで自己を参照する非同期呼び出しまたは静的呼び出しを行っている場合、それは の候補になり[weak/unowned self]
ますか? これについて何か光を当ててくれてありがとう。
swift - これは強力な参照サイクルまたはメモリ リークですか?
私がよく目にする強参照サイクルの例には、互いに参照するプロパティを持つ 2 つのクラスが含まれています。ただし、クラスの 1 つだけが、次のように他のインスタンスを指すプロパティを持っている場合はどうなるでしょうか。
次に、次のようにインスタンスを作成します。
の割り当てを解除myClassB
したので、参照カウントは 1 です。 の参照カウントはどうなりましたmyClassA.classB
か? myClassA.classB = nil
私はこれをやったことがないか、以前にやったことがないので、ゼロになることはありませんでしたdeinit
。私がやったので、これは暗黙のうちに行われmyClassA = nil
ますか?
これは、強い参照サイクルとして分類できるものですか? 少なくともメモリリークだと思いますが、これは本当ですか?
ios - UIView.animateWithDurationではなく、NSNotificationCenterで強力な参照サイクルが可能なのはなぜですか?
NSNotificationCenter ブロックでは、強力な参照サイクルを回避するために [unowned self] を使用する必要があります。
ただし、UIView.animateWithDuration では、[unowned self] を使用する必要はありません。
違いは何ですか?
visual-c++ - C++ - 共有ポインタへの参照数が変更されたときにブレークする方法は?
Microsoft Visual C++ 2015 で、Boost 共有ポインターに "データ ブレークポイント" を設定して、強い参照や弱い参照の数が変わるたびにデバッガーが中断するようにするにはどうすればよいですか?
memory-management - クロージャー、メモリ管理、迅速な内部で参照を強力なものに変換します
次のように、クロージャーで保持サイクルを実験しています
後である時点で、私はやっています
出力は次のようになります。
これは理解できますself
。self?.additionOf(3, b:5)
[weak self]
次のように参照する別の変数を作成して、クロージャー内で変更を加えた場合
今回の出来上がりは
私の質問は、なぜstrongSelf
nil out after でないのかということですsample = nil
。前にクロージャー内に取り込まれているからでしょうかsample = nil
swift - Swift - クロージャーで自己を強力にキャプチャした後にリークが予想される
これが漏れない理由を誰か説明してもらえますか?
self
内でキャプチャしているclosure
ため、2 つの強力なポインターが互いに指し合っているdeinit
ため、Person オブジェクトに対してメッセージが呼び出されることはありません。
まず、これは私のクラスPersonです:
そして、これは私のViewControllerの実装です:
次のようにして問題を解決できると期待していました。
しかし、それは必要でもありませんでした。なんで?