У меня непонятная проблема при попытке заполнить массив NSMutableArray UIImages.
CGBitmapInfo bitmapInfo = kCGBitmapByteOrderMask;
CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefault;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
while(...) // <--- Iterates through data sets
{
CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, data, numBytes, NULL);
CGImageRef cImage = CGImageCreate(iw, ih, 8, 32, 4 * iw, colorSpace, bitmapInfo, provider, NULL, NO, renderingIntent);
UIImage *finalImage = [UIImage imageWithCGImage:cImage];
[images addObject:finalImage]; // <--- Declared and instantiated earlier
[delegate sendImage:finalImage];
CGImageRelease(cImage);
CGDataProviderRelease(provider);
}
CGColorSpaceRelease(colorSpace);
[delegate operationCompletedWithImages:images];
Вот так у меня работает код. Итак, у меня в основном есть функция, выполняющаяся в операторе while, которая возвращает следующий набор растровых данных, затем я создаю UIImage и сохраняю его в изменяемый массив.
Я проверил это, записав каждый файл на диск и затем получив доступ к ним, что привело к правильному набору изображений. Проблема в том, что при использовании массива для хранения данных в памяти, при доступе к любому объекту изображения в массиве я получаю одно и то же точное изображение снова и снова. Изображение также всегда является последним изображением набора.
Я попытался протестировать содержимое, установив массив в качестве массива анимации UIImageView и используя NSTimer для циклического перемещения содержимого. В любом случае, это снова и снова одно и то же изображение (последнее изображение).
Эта операция выполняется внутри подклассного объекта NSOperation, поэтому он не блокирует интерфейс. Другой интересный аспект заключается в том, что когда массив изображений, отправленный с помощью operationCompletedWithImages , давал мне массив дублированных изображений, я попытался использовать сообщение sendImage и сохранить изображения в другом массиве внутри делегата. объект (думая, может быть, это была проблема с потоками). Это дало мне те же результаты.
Я застрял на этом более недели без прогресса. Я никогда не видел ничего подобного, и я не могу найти кого-то еще, у кого была похожая проблема. Я был бы рад предоставить дополнительную информацию, если кто-то считает, что это поможет в решении этой проблемы.
Если бы кто-нибудь мог оказать какую-либо помощь, я был бы очень признателен.