MPMediaLibraryAuthorizationStatusチェックについて

iOS10からは、アプリがiTunesメディアファイルにアクセスする際に、ユーザの許可が必要になりました。

そのアラート画面で許可された後、画面などのUIを更新する場合は、そのままではバックグラウンドで処理されてクラッシュの原因になってしまいます。(毎回クラッシュする訳ではないから厄介)

ブロック内でperformSelectorOnMainThreadかGCDを使ってメインスレッドからUIを更新します。

[MPMediaLibrary requestAuthorization:^(MPMediaLibraryAuthorizationStatus status) {
    if (status == MPMediaLibraryAuthorizationStatusAuthorized) {
        // This will work in the background
        NSLog(@"isMainThread: %d", NSThread.isMainThread);
        dispatch_async(dispatch_get_main_queue(), ^{
            [self.tableView reloadData];
        });
    }
}];

或いは、UIとは分離させて通知を投げる様にしておくと良いと思います。むしろそうゆう使い方が前提かも。