問題タブ [retain-cycle]
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.
ios - Swift のオブジェクトと配列を扱う場合、保持は本当に重要ですか?
この質問の目的のために、任意のタイプのデータを表すクラスがあるとしましょう。これらのクラスのオブジェクトは、ネットワークを形成するために互いに「接続」できます。
私が理解していることから、Swift 配列はオブジェクトを保持します。複数の相互リンクされたDataObject
インスタンスが発生した場合、保持によってパフォーマンスの低下やメモリ リークが発生する可能性はありますか? そして、この特定の問題パターンは何と呼ばれていますか?
ios - 保持サイクルとインスツルメント
私はちょうどこの保持サイクルを書いた:
明らかに、Driver と Car には強力なプロパティがあります。
とにかく、Instruments は Xcode 6.1 の Leaks -> Cycles & Roots で保持サイクルを表示していません。
リテインサイクルですよね?何が起こっているのですか?
objective-c - Cocos2d で ARC を使用して子ノードへの参照をプロパティ保持する方法
多数の子ノードを持つカスタムCCNode
クラスがあり、いくつかのカスタム トランジションを作成するために、子への参照を保持したいと考えています。
たとえば、子の背景の場合、カスタム クラスは次のようになります。
問題は、これにより ARC で保持サイクルが発生し、ノード バックグラウンドがメモリから解放されないことです。
cocos2d-iphone - ARC のカスタム クラスで子 CCNode へのローカル参照を適切に保持する方法
そのため、保持サイクルを作成せずに、またはプロパティまたはインスタンス変数が予測できないように設定されている可能性があるとコンパイラが不平を言うことなくCCNode
、カスタムクラスの子へのローカル参照を保持したいCCNode
nil
たとえば、このカスタムクラスで
...このようなノードを作成する保持サイクルがあります
wherebackground
とnode
は、シーンが置き換えられたときにメモリから解放されることはありません
プロパティbackground
を weak に変更すると、上記のコードのアスタリスク (*) の付いた行で、コンパイラは、weak プロパティまたはインスタンス変数が予測不能に設定されている可能性があることを報告します。nil
アップデート:
これは、弱いインスタンス変数とセトラー メソッドとゲッター メソッドを使用する別のアプローチです。ローカルの強い変数 (*) は、メソッドが弱い ivar を使用する場合_background
、コンパイラーが nil に設定されていると予測できない可能性があると文句を言うためです。
この場合、このアプローチは良いことですか?
ios - ブロック内の強い参照を持つ弱い変数: 保持サイクルを作成しませんか?
ブロック内で弱い参照を強い参照に渡すと、なぜ機能するのですか? ブロック内のローカル変数が保持されている場合、保持が追加され、self
この悪い保持サイクルが作成されますか?
例は次のとおりです。
ios - Swift 保持サイクルと閉鎖
私は保持サイクルを理解するために多くの研究をしようとしました。しかし、私の例では何も見つからないようです。プロパティをクロージャーに設定すると、保持サイクルが発生し、弱いまたは所有されていないものを使用する必要があることを私は知っています。しかし、それらが正しく行われているかどうかを知りたい 2 つの例があります。
シンプルなアニメーション
配列を使ったアニメーション
これらの例の両方で、self
は のサブクラスですUIView
。私はそれを正しく行っているか、または imageView を弱参照として使用する必要があるかどうかを知りたいだけです。ありがとう。
ios - UIView.animateWithDuration(...) のクロージャーで [unowned self] を使用する必要がありますか?
メモリリークを回避する必要がありますか?
ios - 変数として格納された関数は参照サイクルを引き起こす可能性がありますか?
他のクラス関数を変数として格納するクラスがある場合、参照サイクルが発生する可能性がありますか?
例えば
変数関数を弱いまたは所有されていないとして ClassB に格納できないため、参照サイクルが発生する可能性がありますか? それとも、これは参照サイクル/機能に関する私の理解が不十分であることを反映しているだけですか?
ios - Do I need to use a weak self pointer if a method called from a Block uses self?
Using self.
in blocks causes retain cycles, so I need to create a reference to weakSelf
. I understand this
BUT!
If from my block I call a method which uses self
", does this too cause a retain cycle? For instance, if I reload a UITableView
from a block and in some of my UITableView
delegate methods I call self.
, am I causing a retain cycle? Does that mean I have to pass around this weak reference everywhere? Seems hokey.