前回は、スレッドがリークする様子をMAT(Memory Analyzer Tool)を使って説明しました。今回は、スレッドとともによく利用されるハンドラがどのようにリークするかを調べてみます。
ハンドラは異なるスレッドから受け取ったメッセージを処理するものです。たとえば、GUIスレッドとは別のスレッドから表示データを受け取って、そのデータを表示するといった使い方をします。
スマホアプリは、ユーザーの操作反応をよくするために非同期の処理が多く必要です。アンドロイドでもメインスレッドで時間が掛かる処理をシリアルに行うことは避けなければいけません。
アンドロイドOSには、非同期処理を扱うクラスやメソッドが多く存在しますし、Javaのスレッドを扱うなら、Executorsフレームワーク(SE5以上)の利用を検討すべきでしょう。
ようやくXcode6に乗り換えて、少しずつSwiftでプログラミングするようになってきました。
Swiftならこのように書くといったサンプルソースコードも多くあるので、改めてiOSのアプリケーション開発を勉強し直す機会にもなっています。
Playgroundを使うと、インタプリタでSwiftの小さなコードを試すことができます。Objective-Cより簡素に書けるので、少し使い出すと誰もがSwiftを使いたいと感じるのではないでしょうか。