Я делаю следующее, когда возвращаю изображение с сервера. Но этот код приносит мое приложение на колени. Он зависает от пользовательского интерфейса.Могу ли я асинхронно UIImageJPEGПреобразование writeToFile?
Может ли это работать на фоне потока в iOS? Могу ли я использовать async?
if (![NSString isEmpty:user.avatarURL])
{
NSString *pathToImage = user.avatarURL;
NSURL *url = [NSURL URLWithString:pathToImage];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *image = [[UIImage alloc] initWithData:data];
[[NSUserDefaults standardUserDefaults] setObject:UIImageJPEGRepresentation(image, 1) forKey:kUserImage];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString* path = [documentsDirectory stringByAppendingPathComponent:@"userAvatar.png" ];
NSData* jpegdata = UIImageJPEGRepresentation(image, 1);
[jpegdata writeToFile:path atomically:YES];
}
Я не вижу, почему бы не использовать 'dispatch_async'. ДА, вы можете использовать async –
Из вашего кода кажется, что вы ничего не делаете в части пользовательского интерфейса, поэтому вы можете легко выполнить этот код в фоновом режиме. Для этого вы можете использовать dispatch_queues. – IOSCODER