Я столкнулся с той же проблемой в этой конкретной ситуации.
Оказалось, что я передаю экземпляр NSMutableData в глобальную очередь для декодирования.Во время декодирования данные в NSMutableData были перезаписаны следующим кадром, полученным из сети.
Я исправил ошибки, передав копию данных.Для повышения производительности может быть лучше использовать буферный пул:
NSData *dataCopy = [_receivedData copy];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
ZAssert([self isJPEGValid:dataCopy], @"JPEG data is invalid"); // should never happen
UIImage *image = [UIImage imageWithData:dataCopy];
dispatch_async(dispatch_get_main_queue(), ^{
// show image
});
});