0

2 つのビューがあり、2 番目のビューは最初のビューからプッシュされます。テストのために、最初のビューから 2 番目のビューに移動してから、最初のビューに戻ります。その後、nsnotification を送信すると、2 番目のビューで通知を受け取ります。

1) ポップアップ表示後に 2 回目のビューで通知を受け取る理由を教えてください。IBOutlets については、weak プロパティも宣言します。

2) まだメモリ内にある場合、nsdictionary、nsstring などの他のデータについては、強いプロパティまたは弱いプロパティを使用する必要がありますか? それらも記憶に残るでしょうか?

3) 2 番目のビューを完全にメモリに保存したくない場合は、どうすればよいですか?

4

1 に答える 1

-2

最初のビューに「戻る」ときに 2 番目のビュー コントローラーが解放されない場合は、次のいずれかです。

  • あなたは本当に「戻っている」わけではありません - あなたは誤って新しい最初のView Controllerを作成してプッシュしていますが、これはありそうもないことです。また:

  • 2番目のView Controllerに保持サイクルがあります。

保持サイクルがあることは間違いありません。これを追跡するようにしてください。あなたは通知について言及しています。View Controllerを通知オブザーバーとして設定するときに、偶発的な余分な保持を作成するのは非常に簡単なので、おそらくそれが原因です。

特に、このトピックに関する私の本の議論を参照してください。

  • を呼び出しaddObserverForName:object:​queue:usingBlock:た場合、入念な予防策を講じない限り (ARC の下で) リークします (強く保持される を避けるために、ブロック内で弱い強いダンスを行うなどself)。
于 2015-04-28T15:20:59.210 に答える