У меня есть кэш файлов, в которых мне нужно писать/читать изображения.Очистить очередь GCD для всех остальных запросов в очереди
Вся работа с файловой системой должна выполняться в фоновом режиме.
Для этих целей для сохранения файлов я использую:
dispatch_barrier_async([AxPanoramaDataManager sharedInstance].dataManagerQueue, ^{
[data writeToFile:tileFilePathName atomically:YES];
});
И для чтения:
__block UIImage *tileImage = nil;
dispatch_sync([AxPanoramaDataManager sharedInstance].dataManagerQueue, ^{
tileImage = [[UIImage imageWithContentsOfFile:tileFilePathName] retain];
dispatch_async(dispatch_get_main_queue(), ^{
completion (tileCoordValue, side, tileImage, error);
[tileImage release];
});
});
Все работает хорошо, есть большое количество файлов в кассовой папке, но я иногда необходимо очистить наличные деньги. Мне нужно отменить все блоки очереди и выполнить блок с очисткой папки.
Первая моя реализация метода выглядит следующим образом:
+ (void) cleanCash
{
NSString *folderPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingString:@"cash"];
dispatch_sync([AxPanoramaDataManager sharedInstance].dataManagerQueue, ^{
NSError *error = nil;
[[NSFileManager defaultManager] removeItemAtPath:folderPath error:&error];
NSParameterAssert(error == nil);
}
});
}
Но у меня есть многочисленные проблемы, связанные с ним из-за этого не отменить все операции, ожидающих в очереди. Я пытаюсь найти решения в SO, но не могу их реализовать, к сожалению. Кто-нибудь может мне с этим помочь?
Разве вы не имеете в виду «кеш» вместо «наличных»? – Koen
Да, извините En не мой родной язык – ShurupuS
Не стоит беспокоиться, и это не мое :) Я думал, что это смешная опечатка! – Koen