OC
时间: 2024-02-17 18:00:00 浏览: 173
以下是一个在子线程获取图片并在主线程更新 UI 的示例代码,使用的是 Objective-C 语言:
```objective-c
PHImageRequestOptions *requestOptions = [[PHImageRequestOptions alloc] init];
requestOptions.synchronous = YES;
requestOptions.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat;
requestOptions.resizeMode = PHImageRequestOptionsResizeModeExact;
requestOptions.normalizedCropRect = CGRectMake(0, 0, 1, 1);
PHAsset *asset = // 获取图片对应的 PHAsset 对象
PHImageManager *imageManager = [PHImageManager defaultManager];
CGSize imageSize = CGSizeMake(100, 100);
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[imageManager requestImageForAsset:asset
targetSize:imageSize
contentMode:PHImageContentModeAspectFill
options:requestOptions
resultHandler:^(UIImage *image, NSDictionary *info) {
dispatch_async(dispatch_get_main_queue(), ^{
if (image) {
// 在主线程更新 UI
} else {
// 获取图片失败
}
});
}];
});
```
在这个示例中,我们使用 GCD 创建了一个子线程,并在这个子线程上执行了获取图片的操作。在获取到图片后,我们将更新 UI 的操作派发到主线程,以避免在子线程上更新 UI。在主线程中,我们可以更新 UI 或处理获取图片失败的情况。
阅读全文