0

我正在使用下面的代码在后台线程中创建一个 UIImage,然后将此图像设置为我在主线程上的视图的图像。偶尔,我会遇到一个糟糕的访问错误。我想知道我是否不应该在后台线程中创建 UIImage 。有什么想法吗?

CGImageRef imageRef =
    CGImageCreate(serverInit.rfbWidth,serverInit.rfbHeight,bitsPerComponent,bitsPerPixel,bytesPerRow,colorSpaceRef,bitmapInfo,provider,NULL,NO,renderingIntent);

    screenImage = [UIImage imageWithCGImage:imageRef];

    CFRelease(imageRef);

    [view performSelector:@selector(replaceImage:) onThread:[NSThread mainThread] withObject:screenImage waitUntilDone:NO];
4

1 回答 1

0

尝试使用它,它可以防止 screenImage 被释放

CGImageRef imageRef = CGImageCreate(serverInit.rfbWidth,serverInit.rfbHeight,bitsPerComponent,bitsPerPixel,bytesPerRow,colorSpaceRef,bitmapInfo,provider,NULL,NO,renderingIntent);
    screenImage = [UIImage imageWithCGImage:imageRef];
    CFRelease(imageRef);
dispatch_sync(dispatch_get_main_queue(), ^{
   [view replaceImage:screenImage];
});
于 2012-10-16T20:17:55.103 回答