Не рекомендуется делать операцию записи файла в основном потоке.Кроме того, будет проблема с производительностью глобальной очереди по умолчанию, так как система не может установить приоритетность задачи.
Поэтому попробуйте создать 4 типа фоновых очередей:
dispatch_queue_t GlobalUserInteractiveQueue(void) {
return dispatch_get_global_queue(QOS_CLASS_USER_INTERACTIVE, 0);
}
dispatch_queue_t GlobalUserInitiatedQueue(void) {
return dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0);
}
dispatch_queue_t GlobalUtilityQueue(void) {
return dispatch_get_global_queue(QOS_CLASS_UTILITY, 0);
}
dispatch_queue_t GlobalBackgroundQueue(void) {
return dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0);
}
В вашем коде простосделать это:
создать пользовательскую очередь.
queue = dispatch_queue_create("customQueueName", NULL);
затем напишите код в асинхронной отправке
dispatch_async( queue ,
^ {
// execute asynchronously
[fileHandle seekToEndOfFile];
[fileHandle writeData:[_loggingString dataUsingEncoding:NSUTF8StringEncoding]];
});
Проверьте рабочий процесс каждой очереди здесь: https://gist.github.com/ankitthakur/dd945a66924fbd697169