問題タブ [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.
objective-c - __weak SLComposeViewController により、IOS 8 でクラッシュが発生する
IOS 8 の SLComposeViewController に問題があります。Facebook 共有ウィンドウを表示したいのですが、それが完了したら、Twitter 共有ウィンドウを表示します。そのため、完了ブロックを使用する必要があり、保持サイクルを避けるために__weak SLComposeViewControllerを使用する必要がありますが、呼び出すときに
[viewController presentViewController:facebookSLController アニメーション:YES 完了:Nil];
私facebookSLController
はゼロです。のせいです__weak
。しかし、なぜ IOS 7 でクラッシュしなかったのでしょうか? そして、どうすればこの問題を解決できますか?コードの一部を次に示します。
ios - runblock retain self reference cause memory dealloc issue
Here is my code:
After several days googling for the memory issues, finally I found that I had a self retain in this block. When I create the new scene before the block has run, the deinit function won't be called because the reference in the block.
I have to write in this way in my game, and what can I do to avoid this issue. What did you with code like this?
ios - 目標 C - 保持サイクルで失われる
VC を閉じると、メモリからすべてを解放していないことに気付きました。保持サイクルを見つける方法について、私は非常に迷っています。私は NSTimer と NSNotificationCenter を使用していますが、終了する前に Observers を無効にして削除し、弱いデリゲートを使用していることを確認しました。
リテンション サイクルは他にどこで発生している可能性がありますか? アニメブロックで?このような?
GCD を使用するときは、weakSelf を必ず使用します。
助けてくれてありがとう。
編集:
ビューウィルアピア
tableVIEW
ios - GCDブロックに「self」を入れるとメモリリークが発生するのはなぜですか?
benzado が書いた素晴らしい記事を読みました。クラス変数がブロック自体を保持し、ブロックが「自己」を保持している場合、ブロックを使用するとメモリ リークが発生し、保持サイクルが発生します。
API を実装するときにブロック内の自己をキャプチャしないようにするにはどうすればよいですか?
しかし、GCDを使用すると同じ問題が発生する理由がわかりませんか? dispatch_async() のような関数は、クラス自体によってキャプチャされるべきではないローカル変数のように見えますか?
また、公式文書には、ブロックに autorelease を入れて、オブジェクトが時間内にリリースされるようにする必要があると書かれています。
私の IOS プロジェクトのほとんどでは、次のように GCD を使用しています。
今、私はそれらすべてをに変更する必要があります
??
汚れて見えます。誰かが正しい方法でそれを行う方法の手がかりを持っていますか?
ところで、ブロックでいくつかの関数を呼び出し、その関数で「self」または「self.delegate」を使用した場合、すべてを別のものに変更する必要があるということですか? (そして、それを修正するために何をすべきかわかりません)
参考までに、私の IOS プロジェクトは IOS8.1 および非 ARC環境でビルドされています。
objective-c - ブロック内から呼び出されるメソッドは、weakSelf を使用する必要がありますか?
ブロック内のコードがメソッドを呼び出す場合、そのメソッドが自分自身を参照する場合、保持サイクルは存在しますか? つまり、ブロックの下流のすべてのコードは、weakSelf/strongSelf パターンを使用する必要があるのでしょうか?
例えば:
. . .
ios - 自己を維持するためにブロック内に strongSelf が必要ですか? strongSelf は本当に機能しますか?
これは私が学んだことです:self
保持ブロックを使用する場合
weakSelf
リテインサイクルを断ち切る必要がある- 途中で nil
strongSelf
にならないようにする必要がありますself
strongSelf
だから私は aが本当にそのようにself
生き続けることができるかどうかをテストしたい:
ViewController は、navigationController にプッシュされ、すぐにポップアウトされます。出力は
なぜヌル?
weakSelf
別の質問がありますが、ブロック内に大量のなしを含むプロジェクトがstrongSelf
あり、シグナル 11 クラッシュが大量に発生します。それは関連していますか?それぞれに追加する価値はstrongSelf
ありますか?
swift - iOS データソースとアウトレットのリファレンス
YouTube でスタンフォード iOS 開発クラスをいくつか見たところ、よくわからないことがわかりました。講義では、教授はカスタム ビューとカスタム データ ソース クラスを作成する方法を説明します。コードは次のとおりです。
FaceView.swift
HappinessViewController.swift
教授は、ビューとビューコントローラー間の保持サイクルを回避するためにdataSource
、プロパティをプロパティとして宣言する必要があると述べまし
た。weak
dataSource
私の質問は、プロパティを強いと宣言した場合、なぜ保持サイクルがあるのですか? outlet
プロパティがであるためweak
、リテインサイクルはすでに回避されていませんか?