複数のファイルをダウンロードしている NSURLSession があります。iOS 8 用に iOS 7 アプリケーションを更新しています。iOS 7 では問題なく動作しますが、iOS 8 に準拠した場合
URLSessionDidFinishEventsForBackgroundURLSession:
呼び出されることはありません。
私はもう少し深く掘り下げて、
-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location
と
-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error
残りのダウンロード タスクのセッションをチェックしています。
[self.session getTasksWithCompletionHandler:^(NSArray *dataTasks, NSArray *uploadTasks, NSArray *downloadTasks){ ...}
最後に呼び出されたデリゲート メソッドでは、常に 1 つの要素が downloadTasks 配列に残っています。奇妙なことに、このダウンロード タスクは常に同じファイルを参照しているわけではなく、そのタスクのステータスはダウンロードが完了したことを示しています。
繰り返しますが、ios7 では正常に動作します。問題は ios 8 でのみ発生します。