AutorEleaseを使用するとき、実際にリリースされるのはいつですか?
-
27-09-2019 - |
質問
何かがいつ自動化されるのだろうかと思うことがあります。さまざまなオブジェクトの取引にNSLOGを追加しましたが、役に立つものは見つかりませんでした。
AutorEleaseが使用されたとき、いつ何かがリリースされますか?予測不可能ですか、それとも追加のスレッドが実行されていますか?ありがとう。
解決
「Autorelease Poolが期限切れになる」とき。
これが典型的に意味するのは、スタックが巻き戻されているときです。
だからこのように考えてみてください - あなたのアプリはイベント駆動型です。あなたはそれに送られたイベントを取得します - そして、それらは一連の機能を通じて処理されます。各関数が返され、イベントが処理されている場合、AutorEleaseが呼び出されます。
これは、オブジェクトが自動化されたときにまだ生きているオブジェクトを頼りにし、関数から発信者に返すことができることを意味します。あらゆる種類のその後のイベントを処理するとき、または既存のスタックフレームの外部から電話をかけるときに、それが周りにあるとは思わないでください。
他のヒント
CoCoAアプリケーションの各スレッドは、NSAUTORELEASEPOOLオブジェクトの独自のスタックを維持しています。スレッドが終了すると、それ自体に関連付けられたすべてのオートリリースプールを自動的にリリースします。
所属していません StackOverflow