以前iPhoneアプリ開発時のメモリ管理で気をつけることという記事を書いたのですがマルチスレッド時のメモリ管理に関して全く触れてなかったのでまとめてみました。 NSAutoreleasePool はスレッドごとに作成する 処理を別スレッドで実行する場合、スレッドごとに NSAutoreleasePool が必要になります。NSAutoreleasePool の作成を忘れるとメモリリークします。 以下のように main 関数から Sample クラスのインスタンスを生成してメソッドを呼び出している場合、シングルスレッドの場合とマルチスレッドの場合で NSAutoreleasePool の作成タイミングが異なります。 @interface Sample { } - (void)hoge; - (void)foo; - (void)bar; - (void)baz; @end int main(
![iPhoneアプリ開発時のメモリ管理で気をつけること(マルチスレッド編) - A Day In The Life](https://cdn-ak-scissors.b.st-hatena.com/image/square/a07e078739f25f733681b89c1cbe23017a1cb8b8/height=288;version=1;width=512/http%3A%2F%2Fcdn.f.st-hatena.com%2Fimages%2Ffotolife%2Fg%2Fglass-_-onion%2F20110215%2F20110215143500.png)