私のアプリでは、何かにカウントダウンして、最後には、ユーザーがアプリを終了するまで永遠にビープ音が鳴ります。NSTimerを持っていて、決してリリースしないと言うのは安全ですか(NSTimerのケースでは、は無効になります)ユーザーがアプリを終了するまで滞在する必要があるからです。iPhoneデベロッパーオブジェクトは、ユーザーが終了するまで保持されますが、解放しませんか?
答えて
、はい、私は真である2つのもの見つけた:
- これはXはあなたのために解放する必要がないと自分を納得させる、に取得する簡単な習慣です
- 将来のある時点で、実際にそのタイマーを制御できるようになり、今すぐivarを設定できるようになることが分かります道路の下でのトラブルのヒープを保存します(意図した言葉遣いなし)
はい、できます。もし私があなただったら、私はアプリデリゲートでapplicationDidFinishLoading
に初期化し、それをapplicationWillTerminate
で無効にします。技術的には
問題は、3つのオブジェクトがビューコントローラ内で作成されるため、アプリケーションが終了するまで残り続ける3つのオブジェクトのivarsを作成する必要があります。 – mk12
applicationWillTerminateの解放/無効化とviewControllerのdeallocの違いは何ですか? – mk12
viewControllerがルートビューコントローラの場合はそれほど多くありません。いずれの場合でも、オブジェクトが初期化されている場所のオブジェクトを常に解放する必要があります。これは問題ではありませんが、ビューコントローラの順序を変更するとデバッグ時間を節約できます。 – notnoop
- 1. スクリプトが終了してもPyperclipは保持されません
- 2. RandomAccessFilesは、アプリケーションが終了するまで終了しません。
- 3. NSIvocationOperationの終了後に引数が保持されますか?
- 4. 終了するまで結果が表示されません。
- 5. カカオ64ビットバイナリリークメモリ? (NSDataを解放するとメモリが解放されません)
- 6. エラー: "ポインタが解放されていませんでした。"
- 7. Cocos2D:CCLabelTTFは終了空白を保持しません。
- 8. アニメーションが終了すると、アニメーションの終了イメージを保持します。
- 9. 完了前にObj-C自動解放ネットワークリクエストが解放されました
- 10. ローカルストレージ内のデータは、アプリケーションの終了後には保持されません。
- 11. NSStringが保持されていても解放されています
- 12. 書き込みロックが保持されずに解放されています
- 13. Rails DBレーキタスクは実行されますが、決して終了しません。
- 14. バックキーが検出されましたが、アクティビティが終了していません
- 15. Maven Release Pluginが解放されません。 Svn CHECKOUTが失敗しました
- 16. フラグメントがメモリから解放されていません
- 17. オブジェクトは解放されませんがEXC_BAD_ACCESS?
- 18. iosビュー階層でメモリが解放されていません
- 19. メモリがMKMapView/ARCで解放されていません
- 20. Azure Blob Leaseは、正常でない終了時に解放されませんか?
- 21. IPhone UIActivityIndicatorは、処理が完了するまで表示されません。
- 22. 私のカスタムクラスオブジェクトは、それを保持した後でも解放されます
- 23. PhoneStateListener()が終了していません
- 24. ループが終了していません
- 25. Pythonプログラムが終了しません
- 26. オートレリースされた変数を保持していますが、どこから解放しますか?
- 27. スレッドが終了すると.Join()呼び出しがブロック解除されることはありません
- 28. UIViewControllerがポップされました - > CAAnimation.delegateが解放されませんでしたか?
- 29. IPHONE UIIMAGEVIEWは解放できませんか?
- 30. Python 2.6 GCがオブジェクトをクリーンアップするのに表示されますが、メモリは解放されません。
誰かがapplicationWillTerminateの使用を提案しました。その方法を使用するポイントは何ですか?なぜそこにとどまる必要があるすべてのもの(ウィンドウ、ビューコントローラ)をリリースしないのですか?私はそれを自分自身のdeallocで解放すべきだと思いますか? – mk12
アイテムを独自のdeallocで解放することで何を意味するのかは不明です。 deallocは、アイテムが解放されたときにのみ呼び出されます。解放された後で(deallocで)deallocを解放した場合(deallocが呼び出された理由)、解放しません:) applicationWillTerminate OSは、アプリケーションが終了する直前に、アプリケーションのデリゲートのためにこのルーチンを呼び出します。これにより、アプリケーションが最終的に終了する前に、メモリクリーンアップなどを行う機会が与えられます。 – fbrereto
私が意味するのは、タイマーからivarsを作成しなければならないということです(彼らはroot view controllerクラスに入っています)。そして、それらのivarsをroot view controllerのdeallocで解放すべきではありませんか?ユーザーがアプリを終了するまで、物事を維持する必要があります。なぜ、あなたはviewWillTerminateの中でView Controllerとそれ以外のものをリリースしないのですか? – mk12