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

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

objective-c - ブロック内の @synchronized(self) は保持サイクルにつながりますか?

@synchronized(self)ブロック内でやりたいとしましょう。これは保持サイクルにつながると思うので、通常は次のように書き直します。

私の質問は、@synchronizedこのようにディレクティブを使用する場合、それは同等@synchronized(self)ですか?

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

methods - メソッドのクロージャーから強い参照サイクルを削除するには?

ここに、閉鎖の強い参照サイクルの例をいくつか示します。格納されたプロパティにクロージャーを割り当てると、クロージャー キャプチャ リストを使用して、キャプチャされた参照を非所有/弱にすることができます。しかし、格納されたプロパティ クロージャにメソッドを割り当てたり、外部スコープのクロージャにメソッドを割り当てたりすると、キャプチャ リストを使用できません。

最後の 2 つのケースで参照サイクルを削除するにはどうすればよいですか?

クロージャのみのキャプチャ リストで強い参照サイクルを作成して回避する例

メソッドからのクロージャーで強い参照サイクルを作成する例

メソッドからクロージャをexternから設定して強参照サイクルを作成する例

出力

「自己への強い参照による閉鎖」をテストします。

プロパティ「ClosureClass のデフォルト値」を持つオブジェクトが初期化解除されています

「メソッド intern でクロージャを設定」をテストします。

「extern メソッドでクロージャを設定」をテストします。

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

objective-c - 弱いポインターを強いポインターに割り当てると、オブジェクトがコピーされますか?

ブロック内で自己をキャプチャすることを回避する一般的なパターンは、ブロックの外側に弱い自己を作成し、これを使用してブロック内に自己の「ローカルに強い」バージョン (内部自己) を作成することです。

innserSelf creation行が実行されるとどうなりますか? メソッドが に送信された時点で、selfinnerSelfコピーですか?methodThatTakesCompletionBlock:someOtherObject

この質問は、innserSelf 行が実行されたときに何が起こるかに焦点を当てています。関連するブロック内の弱い参照への強い参照を見てきましたが、この点に対処していません。