2009-08-21 7 views
0

私のアプリでは、何かにカウントダウンして、最後には、ユーザーがアプリを終了するまで永遠にビープ音が鳴ります。NSTimerを持っていて、決してリリースしないと言うのは安全ですか(NSTimerのケースでは、は無効になります)ユーザーがアプリを終了するまで滞在する必要があるからです。iPhoneデベロッパーオブジェクトは、ユーザーが終了するまで保持されますが、解放しませんか?

答えて

2

、はい、私は真である2つのもの見つけた:

  • これはXはあなたのために解放する必要がないと自分を納得させる、に取得する簡単な習慣です
  • 将来のある時点で、実際にそのタイマーを制御できるようになり、今すぐivarを設定できるようになることが分かります道路の下でのトラブルのヒープを保存します(意図した言葉遣いなし)
+0

誰かがapplicationWillTerminateの使用を提案しました。その方法を使用するポイントは何ですか?なぜそこにとどまる必要があるすべてのもの(ウィンドウ、ビューコントローラ)をリリースしないのですか?私はそれを自分自身のdeallocで解放すべきだと思いますか? – mk12

+0

アイテムを独自のdeallocで解放することで何を意味するのかは不明です。 deallocは、アイテムが解放されたときにのみ呼び出されます。解放された後で(deallocで)deallocを解放した場合(deallocが呼び出された理由)、解放しません:) applicationWillTerminate OSは、アプリケーションが終了する直前に、アプリケーションのデリゲートのためにこのルーチンを呼び出します。これにより、アプリケーションが最終的に終了する前に、メモリクリーンアップなどを行う機会が与えられます。 – fbrereto

+0

私が意味するのは、タイマーからivarsを作成しなければならないということです(彼らはroot view controllerクラスに入っています)。そして、それらのivarsをroot view controllerのdeallocで解放すべきではありませんか?ユーザーがアプリを終了するまで、物事を維持する必要があります。なぜ、あなたはviewWillTerminateの中でView Controllerとそれ以外のものをリリースしないのですか? – mk12

1

はい、できます。もし私があなただったら、私はアプリデリゲートでapplicationDidFinishLoadingに初期化し、それをapplicationWillTerminateで無効にします。技術的には

+0

問題は、3つのオブジェクトがビューコントローラ内で作成されるため、アプリケーションが終了するまで残り続ける3つのオブジェクトのivarsを作成する必要があります。 – mk12

+0

applicationWillTerminateの解放/無効化とviewControllerのdeallocの違いは何ですか? – mk12

+0

viewControllerがルートビューコントローラの場合はそれほど多くありません。いずれの場合でも、オブジェクトが初期化されている場所のオブジェクトを常に解放する必要があります。これは問題ではありませんが、ビューコントローラの順序を変更するとデバッグ時間を節約できます。 – notnoop

関連する問題