iOSでは何もしなければアプリケーションがバックグラウンドに移行するとすぐにRunLoopやワーカースレッドが停止し、サスペンド状態に移行します。 バックグランドに移行する際にデータの保存など処理をしたい場合は、applicationDidEnterBackgroundメソッドで5秒以内の処理が許されています。 このiOSの独自仕様についてはApp States and Multitaskingに詳細があります。 バックグラウンドでさらに処理を継続するにはsetKeepAliveTimeout(VoIP向け)やBackground Fetch(iOS7から)を使う方法などがあります。 これらは定期的(10分以上の間隔)に数秒の処理を行うのに適しています。 数分間処理を継続したい場合はbeginBackgroundTaskWithExpirationHandlerを使います。 beginBa