1|2|3|4Leaksを使って“メモリリーク”を検出するiPhone/iPadアプリでは、メモリの確保と解放を明示的に行わなければなりません。したコーディングのミスで、アプリが必要のないメモリを確保し続けた状態になり、メモリを圧迫してしまうことがあります。これを「メモリリーク」といいます。メモリリークが発生すると、アプリが異常終了したり、iPhone自体にも負荷が掛かってしまいます。これを避けるため、Xcodeにはアプリでメモリリークが発生していないかをチェックする「Leaks」というツールが付属しています。試しにLeaksを使用してメモリリークを発見してみましょう。BMI計算アプリのexecuteResetメソッドに下記のコードを記述し、画面のリセットボタンを押したときにメモリリークが発生するようにしてみます。}}繰り返し呼ばれるaddObjectでNSMutableArrayオブジェクトにNSStringオブジェクトを追加しています。繰り返し処理が終わった後にNSMutableArrayがreleaseされていないため、メモリが確保されたままです。この状態でリセットボタンを押し続けるとメモリリークが発生するので、以下の手順で原因を突き止めます。[実行]→[パフォーマンスツールを使って実行]→[Leaks]をクリックします。[Instruments]というツールが起動するため、[Leaks]を選択します。この状態でシミュレータのクリアボタンを何度か押すと、「NSCFArray」という行が表示され、[Size]の値が増加していくのが分かります。これにより「NSCFArrayというObjectがメモリを確保し続けている」ということが分かり、メモリリークが発生していると推測できます。ソースコード中のどの場所で起きているかは、画面下部にある【1】のアイコンをクリックすると、【2】のスタックトレースの一覧が表示されます。その中にBMICalcVIewControllerのexecuteResetメソッドが表示されているので、こちらをクリックします。選択するとソースコード中のメモリリークが起きている個所が表示されるため、この内容を参考に修正します。Leaksを用いたメモリリークの発見方法は、以上です。今回は、iPhoneアプリ制作の仕上げとして、ホームアイコンや起動画像・国際化の設定方法から、今後より複雑なアプリを制作するときのためのデバッグ機能・メモリリーク発見方法について解説しました。サンプル完成版のソースコードは、こちらからダウンロードできます。4対応にし、新機能を交えたさまざまな開発テクニックについて紹介していきたいと思います。しょうご)どこにでもいる職業プログラマであり、好きな言語はJavaとObjective-C。現在は、業務システムの開発に従事し、顧客の要望に日々全力で応えている。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。