アプリをテストすると、iOS シミュレーターではすべて正常に動作しますが、物理 iOS デバイスで同じアプリを実行するとメモリ リークが発生します。私は iOS アプリを開発するのは初めてで、これには多くの潜在的な理由があることを知っています。シミュレーターと物理デバイスで異なる理由と、メモリ リークの問題を解決する方法があるかどうかを知りたいですか?
3 に答える
以下のチュートリアルを実行することをお勧めします。メモリの問題やその他の問題をデバッグする方法を理解するのに大いに役立ちます。
ヒント: あなたの問題はゾンビ オブジェクトで解決できます。ただし、最初にチュートリアルに従うことをお勧めします。
シミュレーターではなく、デバイスにリークがあることに驚いています。どのように結論付けましたか?どちらもリークしている可能性がありますが、問題はプラットフォームごとに異なって現れるか、単にデバイス上でシミュレーターよりも早く問題が発生するだけです。
漏れがある場合は、次の 2 つのことをお勧めします。
コードを静的アナライザーで実行します (Xcode の [製品] メニューから [分析] を選択します)。新しい開発者は、この信じられないほど便利なツールを無視する傾向があります。アナライザーの結果を確認し、非常に大きなプロジェクトのすべての問題を本当に理解 (および解決) して初めて、Objective C のメモリ管理手法を最終的に習得したことを私は知っています。とにかく、警告が表示された場合は、メモリ管理の問題を示していることが多いため、実際に修正する必要があります。
プロファイラーを介してプログラムを実行します。リークの検出に関するドキュメントを参照してください。
はい、シミュレーターとデバイスには違いがあります (場合によっては厄介な大きな違いです)。これは、それぞれの基盤となるハードウェアがまったく異なるためです。明らかに、シミュレーターはiOS ハードウェアをシミュレートしていますが、だからといって絶対確実というわけではありません。特定の API とフレームワークでは、ハードウェアでのみ機能する場合があり、シミュレーターでは発生しなかったバグがハードウェアで発生することがあります。iOS 開発の「冒険」と考えてください。
リソースについては、@Arab_Geek のリンクと、Apple のTools for iOS Development (特にLeaks などのInstruments ) を参照してください。