問題タブ [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.
ios - 閉鎖による強力な参照サイクル
強い参照サイクルによって引き起こされる可能性のあるメモリ リークをいつ監視する必要があるかを理解しようとしています。迅速なドキュメントから収集できたことからself
、同じインスタンス内でインスタンス プロパティとして宣言されたクロージャで参照を使用すると、キャプチャ リストを宣言しない限り、強い参照サイクルが発生します。
インスタンス プロパティとして格納されていないクロージャや、他のクラスのインスタンス プロパティとして格納されているクロージャはどうなるでしょうか。これらの場合でも、強い参照サイクルについて心配する必要はありますか?
ios - 私のviewControllerへの強い参照を保持しているものは何ですか?
を使用してコントローラー階層からviewControllerを削除していますremoveFromParentViewController
がdeinit
、ビューコントローラーが呼び出されません。強い参照を保持しているものを確認するにはどうすればよいですか?
参照グラフがメモリに存在することを確認する方法はありますか?
これは私の swap メソッドがどのように見えるかです:
宛先transitionFromViewController
completion
/ソース ビューを追加/削除する必要がありますか?
Swiftでにアクセスする方法はrefCount
ありますか?viewController
でコードを解析してみましたInstruments
。ビューコントローラーへの強い参照を保持しているものを見つけますが、理解できませんでした。何か助けはありますか?
ios - 弱いプロパティ & prepareForSegue: 1 つのプロパティが null になり、もう 1 つのプロパティは null になりません
弱い/強いプロパティで prepareForSegue で何が起こるかについて、私は本当に混乱しています。説明させてください:
私は2つの単純なView Controllerを持っています:
- ViewController1
- ViewController2
ViewController1 から ViewController2 への 1 つのセグエで接続されています。
どちらのビュー コントローラーにも次の 2 つのプロパティがあります。
私が理解できないのは、私の prepareForSegue で NSArray が null になるが、NSString が null にならないことです。これは ViewController1 のコードです。
2015-07-07 17:23:12.915 テスト [3675:147600] ViewDidLoad - simpleString: 文字列、simpleArray: ( string2、string3 )
2015-07-07 17:23:14.521 テスト [3675:147600] PrepareForSegue - simpleString: 文字列、simpleArray: (null)
NSArray プロパティを strong に設定すると、値が維持されます。
では、なぜ 2 つの弱いプロパティの動作が異なるのでしょうか?
swift - willset と didset は Swift で閉鎖と見なされますか?
の目的を理解してwillset
いdidset
ますが、それらが閉鎖と見なされるかどうかはわかりません。
それらがクロージャーである場合、次のコードは強い参照サイクルを生成するべきではありませんか?
java - 強参照が直接弱参照にアクセスする場合
Java では、ターゲット オブジェクト A が弱参照 B によってのみ到達される場合、A は GC になる可能性があります。弱い参照 B が同時に強い参照 C に到達するとどうなりますか? たとえば、C は、A を指す弱参照 B のフィールドを含むクラス インスタンスを指します。C が有効であり、obj A への弱参照または強参照が他にない場合、A は依然として GC でありえますか?
swift - Swiftで強力な参照サイクルを特定するにはどうすればよいですか?
SWIFT コードで強い参照サイクルを見つけるためのツールまたは方法はありますか?
強い参照サイクルとは、クラスの 2 つのインスタンスが適切な安全性 ( weak
/ unowned
) なしで相互に参照する場合です。そのため、作成したすべての変数がそれらのオブジェクトの参照を停止すると、ガベージ コレクターがそれらを破棄できなくなります。
runtime - ARC で実行時に __strong ivar を追加
@interface で宣言された通常の ivar は __strong デフォルトです。
ここで、実行時に上記のクラスを作成します。
ただし、「name」という名前の ivar は __strong ivar ではありません。
を使用している間object_setIvar()
、Ivar は newValue を保持できません (自動解放プールの最後に割り当てが解除されます)。
次に、 と の 2 つの関数を見つけclass_setIvarLayout
ましclass_setWeakIvarLayout
たが、 には有用な情報がありませんObjective-C Runtime Reference
。
では、実行時に作成されたクラスに __strong Ivar を追加するにはどうすればよいでしょうか?