10

初めての iPhone アプリケーションを完成させようとしていますが、アプリケーションのメモリ リークやパフォーマンスなどをチェックする一連の手順があるかどうか疑問に思っています。

Leaks 機器でのチェックは十分ですか?

実行する必要がある一連のテストはありますか? 皆さんが私に指摘できるチュートリアル/ドキュメントはありますか?

4

6 に答える 6

4

「リーク」で実行することが重要です。最終テスト用のチュートリアル/チェックリストについては知りませんが、そのようなものがあれば便利です。私が追加するいくつかのこと:

1) シミュレーターだけでなく、実際のハードウェアでテストして、サポートする予定のすべてのハードウェアでパフォーマンスが適切であることを確認してください。私の経験では、シミュレーターではデバイスのパフォーマンスを正確に把握することはできず、古いハードウェアと新しいハードウェアでは大きな違いが生じる可能性があります (極端な例は、iPhone 4 と Gen1 iPhone です)。たとえば、私のアプリの 1 つで、1 ページの PDF レポートを生成します。iPhone 4 や iPad でさえ、約 1 秒かかります。Gen1 iPhone では、同じコードに 8 秒近くかかります。速度を上げるためにできることはあまりありませんでしたが、アプリがフリーズしていないことをユーザーに知らせるために進行状況インジケーターを追加する必要があることは明らかでした。これは、シミュレーターや最新のハードウェアだけで実行しているとは気が付かなかったことです。

2) NSZombieEnabled の実行に少し時間を費やすことをお勧めします。これにより、現在目に見える問題の兆候がなくても、舞台裏に潜んでいる可能性のあるメモリの問題を見つけることができます。詳しくは:

http://www.cocoadev.com/index.pl?NSZombieEnabled

于 2010-12-09T13:20:41.190 に答える
3

Leaks 機器を使用したテストは戦略の一部であるべきですが、すべてではありません。アプリケーションを複数の角度からテストする必要があります。

テストに対する私の戦略は、最初に機能テストに焦点を当て、次にパフォーマンス テストを行い、最後に機能テストを行う傾向があります。コードのどこかにクラッシュするバグがある場合、そのクラッシュが何らかのリソースの枯渇によるものでない限り、パフォーマンスをチューニングしてもほとんど意味がありません。

考えられるすべての条件ですべてのオプションを実行して、アプリケーションを壊してみてください。それが合格した場合、私は通常、画面上のランダムなボタンと領域をできるだけ速く叩いて、さらにクラッシャーが発生するかどうかを確認する「クレイジー モンキー オン クラック」テストを使用します。

そうして初めて、インストゥルメントに目を向けます。Time Profiler および Memory Monitor インストゥルメントを使用して、デバイス上でアプリケーションを実行します (シミュレーターでパフォーマンス チューニングを行う必要はありません)。パフォーマンスのホットスポットとメモリ スパイクの両方、およびメモリの蓄積を探します。これを行っている間、以前に機能上の問題に使用したのと同じ種類のテストを繰り返します。

ホットスポットと明らかなビルドアップに対処したら、メモリのより詳細な調査に進むことができます。私は実際には、微妙なメモリの蓄積やリークを見つけるために、新しいヒープショット分析機能を備えたオブジェクト割り当てツールを使用することを好みます。Leaks インストゥルメントは保守的な傾向があり、ビルドアップを見逃す可能性があります。Nathaniel は、この件に関する Bill Bumgarner の優れた投稿を指摘しています。

オブジェクト割り当てインストゥルメントとそのヒープショットは、UI オートメーション インストゥルメントと組み合わせると特に強力になります。UI オートメーション インストゥルメントでは、アプリケーションの一部で数百または数千サイクルのテストを実行して、ごくわずかなメモリの蓄積を目立たせることができます。私は今、この種のテストをより多く行うようになりました。

テキストで説明するよりも、実際に動かしてみるのが一番効果的だと思うので、iTunes U の上級 iOS コースの一環として、「テスト」と「パフォーマンス チューニング」クラスのビデオを見ることをお勧めします。App Store に提出する前に、これらのツールのそれぞれと、自分のアプリケーションのテストでそれらをどのように使用するかを示します。私のコース ノート( VoodooPad形式) でも、これについて詳しく説明しています。

于 2010-12-10T23:37:11.807 に答える
2

Leaks インストルメントは、すべてではありませんが、多くの可能性のある漏れを検出します。総メモリ割り当てを観察し、必要なときに減少していることを確認してください。bbum のヒープショット分析のケース スタディを読んでください。

http://www.friday.com/bbum/2010/10/17/when-is-a-leak-not-a-leak-using-heapshot-analysis-to-find-undesirable-memory-growth/

最初から実行していない場合は、Build and Analyze コマンドを使用して Clang 静的アナライザーを実行します。

于 2010-12-10T23:04:30.963 に答える
1

アプリのメモリ不足をシミュレートして、アプリがどのように反応するかを確認する必要があります。メモリを消費しすぎているため、iOS によって強制終了されるのはあまり楽しいことではありません。シミュレータでのみ開発する場合、メモリに関しては非常に寛容に見えるため、見逃すのは簡単です。

于 2010-12-09T13:29:19.193 に答える
0

メモリリークを減らす必要があるときはいつでも、必ずオブジェクトを解放してください。

楽器について知るためにこのリンクをチェックしてください。

http://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/Introduction/Introduction.html

于 2010-12-09T12:17:57.613 に答える
0

まず最初にアプリをビルドしますが、XCode のトップ メニュー バーにある [実行] をクリックし、[パフォーマンス ツールで実行] をクリックして [リーク] を選択します。アプリで使用されている Live Bytes とメモリ リークが発生している場所を確認できる新しいウィンドウが表示されます。メモリ リークは赤いマークで示されます。これを行っている間に問題が見つかった場合は、お気軽にお問い合わせください。

于 2010-12-09T12:23:28.720 に答える