質問

(そうですね、あなたは私がinterfacaeビルダーなしでiPhone向けの開発を学んでいることを知っています)

ルートビューコントローラーと2つの他のビューコントローラーを備えた最初のマルチビューアプリをコーディングしています。ルートビューコントローラーは遅延読み込みを使用するため、viewDidLoadのときに最初のビューコントローラーを作成し、そのビューをサブビューに追加しますが、必要になるまでもう一方は作成しません。ただし、2番目のものが読み込まれた後は、アプリケーションが終了するまで(メモリの警告が表示されない限り)両方にとどまります。

だから私は疑問に思っています:ユーザーが他のビューを2つ切り替えると、削除される他のビューをアンロードする必要があります(nilに設定して、その保持プロパティ)?ユーザーがボタンをクリックするたびに、現在のViewControllerがアンロードされ(スーパービューから削除された後)、次のViewControllerがロードされてサブビューとして追加されますか?

これは正しいことですか、それとも正しいことですが、アプリケーションに多くのビューがあり、私のものがこれを行うのに十分なほど複雑ではない場合、またはそれを行うのが悪いので、 didReceiveMemoryWarningが処理します(didReceiveMemoryWarningでは、現在表示されていないviewcontrollerをnilに設定します)?

役に立ちましたか?

解決

答えは本当に異なります。通常、表示されていないビューを解放してnilに設定する必要がありますが、ユーザーが頻繁にビューを切り替える場合は、非表示のビューを保持(キャッシュ)したままにしておくことができます。

アプリでユーザーの電話をdidReceiveMemoryWarningにプッシュすることは望ましくありません。その警告が表示されると、iPhoneがキャッシュされたSafariページ、キャッシュされたUIImageViewオブジェクトなどをダンプしている間、アプリケーションが一時的にフリーズする可能性のある他のことが電話で発生しています...このプロセスはエンドユーザーとアプリケーションが本来のように滑らかに感じられない場合があります。

一部のユーザーは、第3世代のiPhone、iPod Touch、および3Gを使用しているため、3GSの余分なメモリがないことに注意することも重要です。

そうは言っても、私はメモリを控えめに考えているので、ビューを解放して無効にし、ユーザーが見たいときに再インスタンス化します。 didReceiveMemoryWarningによるビューの割り当てとシステムのクリーンアップの影響は、通常、アプリケーションのユーザーに対してはるかに小さくなります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top