【发布时间】:2012-10-16 19:46:55
【问题描述】:
我正在使用下面的代码在后台线程中创建 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];
【问题讨论】:
-
如果不执行选择器replaceImage,它会崩溃吗?我认为您的 screenImage 在选择器在其他线程上执行之前发布。
-
我没有在没有选择器的情况下尝试过 - 这个错误很少发生,如果没有这个选择器,我无法真正长时间测试应用程序。至于发布,我认为我可以在使用 imageref 创建 UIImage 后立即执行此操作。不是这样吗?
-
如果很少,那么 screenImage 会在 replaceImage 选择器之前释放
标签: ios multithreading uikit uiimage