У меня есть архитектура, в которой мне нужно вызывать локальную функцию для отображения изображения, а затем в фоновом режиме необходимо загрузить изображение на сервер, чтобы после завершения загрузки я мог удалить локальный путь, используемый для отображения изображения.
Функции
DidCmpletePickingImage()
, DisplayImageUsingLocalPath()
, UploadImageToServer()
и RemoveImageFromLocal()
.
Это действия.Теперь у меня есть возможность загрузить несколько изображений.
Это мой текущий подход.Я выбираю массив изображений и вызываю функцию, чтобы показать их, используя локальный путь.
for (NSInteger i = 0;i < photos.count ; i ++){
UIImage *img = photos[i];
img = [self imageWithImage:img scaledToWidth:400];
NSData *imageData = UIImageJPEGRepresentation(img, 0.40);
[self showLocally:imageData img:img];
}
После того, как они показаны, я начинаю загружать их на сервер в фоновом потоке
-(void) showLocally:(NSData *)imageData img:(UIImage *)img{
// Code for showing it using temp path.
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0ul);
dispatch_async(queue, ^{
[self fileUpload:img];
});
}
Затемс помощью фонового потока Файл загружается на сервер с помощью AFNetwork, а затем после получения ответа я вызываю удалить путь к локальному файлу.
Но когда я делаю этот вызов на фоне, все изображения одновременно вызывают fileUpload
метод и сделать это concurrently
, который увеличивает нагрузку на сервер.Как я могу заблокировать вызов функции, пока предыдущий объект, который вызвал функцию, не будет полностью выполнен?