NSMutableArray를 UIImages로 채우는 중 당황스러운 문제가 있습니다.NSMutableArray w/UIImage 객체로 채우는 중 문제가 발생했습니다.
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 메시지를 사용하여 시도한 중복 이미지의 배열을 제공하고 위임 객체 내부의 다른 배열에 이미지를 저장할 때 (아마도 스레딩이라고 생각했을 때 발행물). 이것은 저에게 동일한 결과를주었습니다.
나는 1 주일 이상 계속 진행되지 않고있어왔다. 나는 그와 같은 것을 본 적이 없으며 비슷한 이슈를 가진 사람을 찾을 수 없습니다. 누군가이 문제를 해결하는 데 도움이된다고 생각하면 추가 정보를 제공하게되어 기쁩니다.
누구든지 도움을 제공 할 수 있다면 크게 감사하겠습니다.
감사합니다! 그것은 올바른 방향으로 나아가는 단계입니다. 주 스레드에서 sendImage 선택기를 수행 할 때 나는 확실히 적절한 이미지를 얻고 있습니다. 이제 대리인 객체 (주 스레드)의 배열에 해당 이미지를 추가하려고합니다. 문제는 그들이 모두 추가되고 검토를 시도하면 모두 동일하다는 것입니다. 매우 이상합니다. 그래서 배경 스레드에서 적절한 이미지를 받고 있지만 어쨌든 배열은받은 마지막 이미지의 복사본을 저장하는 중입니다 ... –
'모두 동일'이란 무엇을 의미합니까? 모든 이미지가 동일한 내용을 가지거나 똑같은 인스턴스 *입니까? 배열에 저장된 포인터 값을 확인하십시오! – PfhorSlayer
렌더링이 동일합니다. 흥미로운 점은 UIImage & CGImageRef 포인터가 배열에서 고유하지만 배열의 모든 UIImage에 대한 NSObject -> ISA 주소가 동일하다는 것입니다. 이게 무슨 뜻인지는 모르겠지만 지금까지 찾을 수있는 유일한 연결입니다. 또한 10 개의 UIImage 인스턴스 변수를 선언하고 거기에 10 개의 이미지 집합을 저장하려고했습니다. 이것은 효과가있다! 그래서 문제는 배열 (내가 NSArray, CFArray 및 C 배열 - UIImage * 이미지 [...])를 시도한 배열에 이미지를 저장할 때 발생하는 것 같습니다. –