問題タブ [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.

0 投票する
2 に答える
1434 参照

python-2.7 - 弱い参照を強い参照に変更するには?

RPyC を使用してクライアントに接続し、パラメーター オブジェクトを使用して Service 公開メソッドを呼び出します。公開されたメソッドからこのオブジェクトを取得して何かをしたいのですが、このオブジェクトは弱参照されており、その時点でそのデータにアクセスしたい: オブジェクトが "弱参照オブジェクトではない" ことを示す ReferenceError を取得します。もはや存在する」

ガベージ コレクションからの弱参照でオブジェクトを保護するにはどうすればよいですか? 強く参照されるように変更するにはどうすればよいですか?

server.py (メッセージの送信)

client.py (データを処理してキューに入れる)

other.py (キューの読み取り)

0 投票する
1 に答える
247 参照

swift - 閉鎖の強い参照サイクルについて混乱していますか?

私の質問は: クロージャーが Lazy と宣言されているのはなぜですか? クロージャーで認識されていないことに関係があることはわかっていますが、作成されていないメソッドselfの場合も同じではありませんか?initself

第二に、このコード例の強い参照サイクルは正確にはどこですか?それselfは を強く参照してasHTMLいますか?もしそうなら、サイクルを引き起こす強い参照の 2 番目の部分はどこですか?

第三に、定数が値をtext変更できないのに、定数プロパティがオプションである理由は何ですか?nilnil

最後に、メソッドがユーザーから送信されたパラメーターを受け入れるために使用されている場合、text: String? = nilメソッドにパラメーターがあるとはどういう意味ですか?initinit

この長い質問で申し訳ありませんが、クロージャの強参照サイクルについて混乱しています....クラスプロパティとクラスインスタンス間の強参照サイクルは理解していますが。

0 投票する
2 に答える
712 参照

ios - この Objective-C コードは強力な参照サイクルを作成しますか?

私は他の誰かの iOS プロジェクトで作業しています。ARC は有効になっています (私の知る限り、常に有効になっています)。コードには、いくつかのビュー コントローラーのインスタンスを作成し、そのデリゲートを自分自身に設定してから表示するボタン プレス ハンドラーが散らばっています。

MyViewController は、音楽キーを選択するためのスピン ウィジェットを表示します。選択したら、ユーザーは選択したキーを使用して音楽を作成するために押し戻します。これらは唯一のユーザー インタラクションであり、バックグラウンド プロセスなどはありません。

MyViewController.h ファイルでは、デリゲートは次のように宣言されています。

2 つの質問があります。

  1. 元の作成者が、ボタンを押すたびに MyViewController の新しいインスタンスを作成することを選択したのはなぜでしょうか?
  2. そのような各インスタンスの所有者は誰ですか? 【いつ】壊れるの?デリゲートへの強い参照を保持しているため、現在の実装は [ボタンを押すたびに] 強い参照サイクルを作成していますか?

私自身の本能は、デリゲートにプライベートな MyViewController * プロパティを作成することです。このプロパティは、最初にボタンを押したときにのみ読み込まれます。次に、一般的な推奨に従って、MyViewController のデリゲート プロパティを強力ではなく弱くします。しかし、私が言ったように、現在の実装は非常にユビキタスなので、最初にそれがどのように機能するかを理解せずに何かを変更するのは気が進まない.

どんな助けでも大歓迎です。

0 投票する
2 に答える
1176 参照

ios - 非同期呼び出しまたは静的呼び出しで強力な保持サイクルを実現するにはどうすればよいですか?

強力な保持サイクルが可能であり、使用する必要がある場合をどのように認識できるかを理解しようとしています[weak/unowned self]。不必要な使用でやけどを負い、[weak/unowned self]使用する機会を与える直前に自己の割り当てが解除されました。

たとえば、以下はselfクロージャーで参照する非同期ネットワーク呼び出しです。呼び出し自体を変数に保存せずにネットワーク呼び出しが行われるため、ここでメモリリークが発生する可能性はありますか?

次に、NSNotificationCenter を使用した別の例を示します。ここでは、後で非同期に呼び出しを行うことができます。

私の質問は、強力な保持サイクルが可能なのはどのような場合ですか? クロージャーで自己を参照する非同期呼び出しまたは静的呼び出しを行っている場合、それは の候補になり[weak/unowned self]ますか? これについて何か光を当ててくれてありがとう。

0 投票する
1 に答える
259 参照

swift - これは強力な参照サイクルまたはメモリ リークですか?

私がよく目にする強参照サイクルの例には、互いに参照するプロパティを持つ 2 つのクラスが含まれています。ただし、クラスの 1 つだけが、次のように他のインスタンスを指すプロパティを持っている場合はどうなるでしょうか。

次に、次のようにインスタンスを作成します。

の割り当てを解除myClassBしたので、参照カウントは 1 です。 の参照カウントはどうなりましたmyClassA.classBか? myClassA.classB = nil私はこれをやったことがないか、以前にやったことがないので、ゼロになることはありませんでしたdeinit。私がやったので、これは暗黙のうちに行われmyClassA = nilますか?

これは、強い参照サイクルとして分類できるものですか? 少なくともメモリリークだと思いますが、これは本当ですか?

0 投票する
2 に答える
1324 参照

ios - UIView.animateWithDurationではなく、NSNotificationCenterで強力な参照サイクルが可能なのはなぜですか?

NSNotificationCenter ブロックでは、強力な参照サイクルを回避するために [unowned self] を使用する必要があります。

ただし、UIView.animateWithDuration では、[unowned self] を使用する必要はありません。

違いは何ですか?

0 投票する
1 に答える
490 参照

visual-c++ - C++ - 共有ポインタへの参照数が変更されたときにブレークする方法は?

Microsoft Visual C++ 2015 で、Boost 共有ポインターに "データ ブレークポイント" を設定して、強い参照や弱い参照の数が変わるたびにデバッガーが中断するようにするにはどうすればよいですか?

0 投票する
1 に答える
433 参照

memory-management - クロージャー、メモリ管理、迅速な内部で参照を強力なものに変換します

次のように、クロージャーで保持サイクルを実験しています

後である時点で、私はやっています

出力は次のようになります。

これは理解できますselfself?.additionOf(3, b:5)

[weak self]次のように参照する別の変数を作成して、クロージャー内で変更を加えた場合

今回の出来上がりは

私の質問は、なぜstrongSelfnil out after でないのかということですsample = nil。前にクロージャー内に取り込まれているからでしょうかsample = nil

0 投票する
3 に答える
659 参照

swift - Swift - クロージャーで自己を強力にキャプチャした後にリークが予想される

これが漏れない理由を誰か説明してもらえますか?

self内でキャプチャしているclosureため、2 つの強力なポインターが互いに指し合っているdeinitため、Person オブジェクトに対してメッセージが呼び出されることはありません。

まず、これは私のクラスPersonです:

そして、これは私のViewControllerの実装です:

次のようにして問題を解決できると期待していました。

しかし、それは必要でもありませんでした。なんで?