メモリは無限ではなく有限なので、必要な時に確保して不要になった時は解放する必要があります。
そのメモリ管理を怠ると、解放しないまま次のメモリを確保してしまい、解放するためのポインタ情報を失ってしまったりします。
そんな事にならないようにしなければいけません。
そのメモリの確保・解放が正しく行われているかを静的に解析するための便利なツールに「clang」というものがあります。
まずは以下からツールをダウンロードします。
□ LLVM/Clang Static Analyzer
http://clang.llvm.org/StaticAnalysis.html
現在の最新版は「checker-0.209.tar.bz2 (built May 18, 2009) 」
ダウンロードしたら解凍します。
解凍したら、解凍したファイルを「/usr/local/bin/」へコピーするのですが、普通にはFinderでそのフォルダへ移動する事はできません。
まずはFinderを開いて、上のメニューの移動から「ファルダへ移動」を選択します。
そこに「/usr/local/bin/」を入力します。
そうするとフォルダへ移動する事ができます。
フォルダへ移動できたらさっきのファイルを全てコピーします。
これでclangを使う事ができます。
そしたらターミナルを開いて、静的解析したいプロジェクトのフォルダへ移動します。
cd /Users/ユーザ名/Desktop/MyProject |
ビルドしたファイルが残っていると正しく静的解析がされない事があるので、クリーニングをします。
xcodebuild clean |
クリーニングが終わってから以下のコマンドを実行すると静的解析が始まります。
scan-build -o ~/Desktop/ xcodebuild |
「-o ~/Desktop/」は、デスクトップに解析結果のHTMLファイルを保存するという事です。
色々なオプションがありますが、基本的には以下のようなオプションでいいかと思います。
scan-build --view -o ~/Desktop/ xcodebuild |
こうすると、静的解析が終わった後に問題があればブラウザを起動してレポートを表示してくれます。
問題がなければそのまま止まります。
注意として「すべての構成のベースSDK」がDeviceになっているとコンパイラが見つからないというエラーでビルドに失敗します。
なので、Simulatorにしなければいけません。
場所はプロジェクトの情報の一般タブの下の方にあります。
上記のコマンドを毎回実行していると面倒くさいので、AppleScriptを書いておくと楽です。
例えばこんな感じです。
on run |
clangを使う事で80%くらいの問題は解消できます。
あとの20%はInstrumentsを使って潰していくしかないです。
【iPhoneプログラミングの最新記事】