問題タブ [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 - メモリ サイクル = strong0 ^ strong1 ポインター。(強い1 == 弱い) ? @"はい・いいえ"
この場合、メモリサイクルが発生する理由を知りたいです。
ブロック内で自己が参照されているため、ブロックには自己への強力なポインターがあります。そして、myBlocks を強く指します。しかし、なぜ myBlocks はブロックへの強力なポインターを持っているのでしょうか?
ios - 強い参照を使用してView Controller間でオブジェクトを渡すiOS
ナビゲーション スタックでのプロファイル編集専用の一連の VC があります。さらに深く進むと、カスタム オブジェクトuserProfileが渡され-prepareForSegue
ます。私の問題は、この構成ではすべての userProfiles が単一のオブジェクトを指しているように見え、現在のプロファイルに変更が加えられた後に戻るボタンが押されると、親コントローラーのプロファイルも変更されることです。
各 VC には、次のように .h ファイルで宣言されたプロパティがあります。
userProfile は非常に単純なクラスです
私が見ているように、解決策は、各コントローラーがオブジェクトの独自のコピーを保持するようにすることにあります。正しく実装する方法がわかりません。これで問題は解決しますか?
はいの場合、カスタム オブジェクトに -copy メソッドを実装するにはどうすればよいですか?
ios - iOSのself.timer = nilと[self.timer invalidate]の違いは何ですか?
self.timer=nil
誰かが私を説明できます[self.timer invalidate]
か?
のメモリ位置で正確に何が起こりself.timer
ますか?
私のコードでは
タイマーは止まりませんが、
タイマーを停止します。
私のコードが必要な場合は、それも更新します。
class - Swift クラス: 参照サイクル
以下のプログラムを実行すると、セグメンテーション違反が発生します。理由を教えてください。ありがとう
c# - アクションですと関数強力な参照として渡されましたか?
ゲームがシャットダウンするときにオブジェクトがコールバックを登録できるように、Game クラスに Register Callback メソッドがあります。
ゲームがシャットダウンしたら、コールバックを呼び出します。
私の質問は、モンスターが死ぬか、アイテムが null に設定されたなどの理由で、これらのコールバックのいずれかの所有者が null になった場合はどうなるかということです。コールバック所有者への強い参照を保持していますか? もしそうなら、登録解除メソッドを提供する方が良い方法ですか、それとも WeakReference でラップする必要がありますか?
エンジンはイベントの代わりにコールバックを使用しているため、プレイヤー、モンスター、バトル コードなどで非同期操作を実行できます。そのため、多くのオブジェクトにはこの RegisterCallback スタイルのメソッドがあり、オブジェクト内で特定のイベントが発生したときにコールバックを呼び出します。強い参照を保持している場合は、オブジェクトの適切な登録解除に依存するよりも、弱い参照を保持して自己クリーンアップすることを好みます。エンジンは、サードパーティのユーザーがプラグインを作成してコールバックを登録できるようにする API を提供します。エンジン自体で制御できるのであれば、開発者がオブジェクトを適切に登録解除することに依存したくありません。
ios - Managed Object と Collectionview Cell の間の強い参照サイクルを断ち切る
アップデート :
Core Data や CollectionView とは何の関係もありません。CollectionView を保持している ViewController を却下したことはありません。詳細は以下の回答で!
Swift iOS でメモリ リークが発生しています。最初はフェッチ関数にあると思っていましたが、別のことを試しました。私UICollectionViewCell
と私の関係はManaged Object
、いろいろなところで断ち切られました。画像を取得しています。そこで、フェッチの結果を、結果があった回数だけ配列に追加されたランダムな画像アセットに置き換えました。これは常に私のリークを修正しました。これで、フェッチ関数の問題ではなく、Cell に向かう途中の他の関数の問題ではないことがわかりました。
グーグルで調べたところ、Core Data はそれ自体で強力な参照サイクルを作成する傾向があることがわかりました。しかし、それだけではないと思います。もしそうなら、Cell で得られた画像の配列を使用しなくてもかまいません。まだリークがあるはずですが、画像を Core Data から Cell に接続しなければ、リークはありません。
私が理解していないのは、そもそもなぜリークがあるのかということです。配列は参照ではなく値のように機能すると思いました。したがって、コアデータからロードされた画像を配列に配置すると、コピーのように機能し、強力な参照サイクルがあってはなりません...
また、画像の Binary Data 属性を持つ管理対象オブジェクトを更新しても問題が解決しないこともわかりました。
それで、私は今何をしますか?すべてのセルを削除する必要がありますか? Core Data の NSData から UIImages を作成する必要がありますか? オブジェクトの属性を更新する方法を見つける必要がありますか? ...
ありがとう!
フェッチ(物事を として設定しようとしましたがweak
、機能しません):
UICollectionViewCell :
セル内の入力画像 (thumbs は変数配列 => [NSData]):