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

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

objective-c - __weak SLComposeViewController により、IOS 8 でクラッシュが発生する

IOS 8 の SLComposeViewController に問題があります。Facebook 共有ウィンドウを表示したいのですが、それが完了したら、Twitter 共有ウィンドウを表示します。そのため、完了ブロックを使用する必要があり、保持サイクルを避けるために__weak SLComposeViewControllerを使用する必要がありますが、呼び出すときに

[viewController presentViewController:facebookSLController アニメーション:YES 完了:Nil];

facebookSLControllerはゼロです。のせいです__weak。しかし、なぜ IOS 7 でクラッシュしなかったのでしょうか? そして、どうすればこの問題を解決できますか?コードの一部を次に示します。

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

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?

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

ios - 目標 C - 保持サイクルで失われる

VC を閉じると、メモリからすべてを解放していないことに気付きました。保持サイクルを見つける方法について、私は非常に迷っています。私は NSTimer と NSNotificationCenter を使用していますが、終了する前に Observers を無効にして削除し、弱いデリゲートを使用していることを確認しました。

リテンション サイクルは他にどこで発生している可能性がありますか? アニメブロックで?このような?

GCD を使用するときは、weakSelf を必ず使用します。

助けてくれてありがとう。

編集:

ビューウィルアピア

tableVIEW

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

ios - GCDブロックに「self」を入れるとメモリリークが発生するのはなぜですか?

benzado が書いた素晴らしい記事を読みました。クラス変数がブロック自体を保持し、ブロックが「自己」を保持している場合、ブロックを使用するとメモリ リークが発生し、保持サイクルが発生します。

API を実装するときにブロック内の自己をキャプチャしないようにするにはどうすればよいですか?

しかし、GCDを使用すると同じ問題が発生する理由がわかりませんか? dispatch_async() のような関数は、クラス自体によってキャプチャされるべきではないローカル変数のように見えますか?

また、公式文書には、ブロックに autorelease を入れて、オブジェクトが時間内にリリースされるようにする必要があると書かれています。

私の IOS プロジェクトのほとんどでは、次のように GCD を使用しています。

今、私はそれらすべてをに変更する必要があります

??

汚れて見えます。誰かが正しい方法でそれを行う方法の手がかりを持っていますか?

ところで、ブロックでいくつかの関数を呼び出し、その関数で「self」または「self.delegate」を使用した場合、すべてを別のものに変更する必要があるということですか? (そして、それを修正するために何をすべきかわかりません)

参考までに、私の IOS プロジェクトは IOS8.1 および非 ARC環境でビルドされています。

0 投票する
3 に答える
155 参照

objective-c - ブロック内から呼び出されるメソッドは、weakSelf を使用する必要がありますか?

ブロック内のコードがメソッドを呼び出す場合、そのメソッドが自分自身を参照する場合、保持サイクルは存在しますか? つまり、ブロックの下流のすべてのコードは、weakSelf/strongSelf パターンを使用する必要があるのでしょうか?

例えば:

. . .

0 投票する
3 に答える
316 参照

ios - 自己を維持するためにブロック内に strongSelf が必要ですか? strongSelf は本当に機能しますか?

これは私が学んだことです:self保持ブロックを使用する場合

  1. weakSelfリテインサイクルを断ち切る必要がある
  2. 途中で nilstrongSelfにならないようにする必要がありますself

strongSelfだから私は aが本当にそのようにself生き続けることができるかどうかをテストしたい:

ViewController は、navigationController にプッシュされ、すぐにポップアウトされます。出力は

サンプル

なぜヌル?

weakSelf別の質問がありますが、ブロック内に大量のなしを含むプロジェクトがstrongSelfあり、シグナル 11 クラッシュが大量に発生します。それは関連していますか?それぞれに追加する価値はstrongSelfありますか?

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

swift - iOS データソースとアウトレットのリファレンス

YouTube でスタンフォード iOS 開発クラスをいくつか見たところ、よくわからないことがわかりました。講義では、教授はカスタム ビューとカスタム データ ソース クラスを作成する方法を説明します。コードは次のとおりです。

FaceView.swift


HappinessViewController.swift


教授は、ビューとビューコントローラー間の保持サイクルを回避するためにdataSource、プロパティをプロパティとして宣言する必要があると述べまし た。weak

dataSource私の質問は、プロパティを強いと宣言した場合、なぜ保持サイクルがあるのですか? outletプロパティがであるためweak、リテインサイクルはすでに回避されていませんか?