libsqlite がスレッドセーフでない場合、そのようなコード
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
__block NSArray *__albumsCollection = albumCollections;
dispatch_apply(count, queue, ^(size_t i)
{
MPMediaItem *albumObj = [[__albumsCollection objectAtIndex:i] representativeItem];
///// making some sqlite queries
});
BAD_EXEC が発生します。
では、このコードをスレッド セーフにするにはどうすればよいでしょうか。
私の解決策はメインキューを使用していました
dispatch_apply(count, dispatch_get_main_queue(), ^(size_t i)
{
/// my sqllite queries
});
しかし、私はそれに満足していません。それをより良くする方法は?