UIImage* img = [UIImage imageWithCGImage: imageRef];
该操作只能在主线程中执行。
现在,我需要修改所有在后台线程中运行的图像创建函数。
问题是如何更改上述代码。
通常创建图像的步骤如下。
CGImageRef imageRef = CGBitmapContextCreateImage(context);
UIImage* img = [UIImage imageWithCGImage: imageRef];
CGImageRelease(imageRef);
CGContextRelease(context);
return img;
如果performSelector返回一个值,那么这将非常容易。
但实际上并不是这样的。由于这似乎是一个相当普遍的需求,我想知道有没有更好的做法来实现这一点。
谢谢。
performSelectorOnMainThread:@selector(loadImage:) withObject:(id)imageRef waitUntilDone:NO
。需要注意的唯一事项是(id)强制类型转换。不确定为什么需要 performSelector 返回一个值,但是您可以使用waitUntilDone
来有效地获取选择器完成的确认。如果需要执行更复杂的操作,您始终可以使用NSInvocation
。 - lxt