iphone - 无法从异步 block 向主线程发送参数

标签 iphone ios cocoa-touch grand-central-dispatch alassetslibrary

我有以下方法,它在拍摄照片后从 UIImagePicker 中检索 ALAsset。然后它尝试通过主线程将此 ALAsset 发送到我的另一个方法:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    NSURL *imageURL = [[info valueForKey:UIImagePickerControllerReferenceURL] retain];
    __block ALAsset *result;

    [self.assetsLibrary assetForURL:imageURL resultBlock:^(ALAsset *asset)
    {
        result = [asset retain];

        dispatch_async(dispatch_get_main_queue(), ^
        {
            [self loadPhotoImageViewWithAsset:result];
            [self dismissModalViewControllerAnimated:YES];
            [imageURL release];
            [result release];
        });
    }
    failureBlock:^(NSError *error)
    {

    }];
}

当我进入 dispatch_async(dispatch_get_main_queue(), ^ block 时,result 显示为 nil。任何人都知道我在做什么做错了吗?

最佳答案

引用UIImagePickerController to use for a UIImageView结果显示为零。

像这样使用:

 [self.assetsLibrary assetForURL:imageURL resultBlock:^(ALAsset *asset)
{
    result = [asset retain];
    [self loadPhotoImageViewWithAsset:result];
    [self dismissModalViewControllerAnimated:YES];
    [imageURL release];
    [result release];   
}
failureBlock:^(NSError *error)
{

}];

改变你的loadPhotoImageViewWithAsset方法

-(void)loadPhotoImageViewWithAsset:(ALAsset *)asset
{
  //dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
   //dispatch_async(queue, ^{
    dispatch_async(dispatch_get_main_queue(), ^
    {
     //here code for loading image
    });
  // });
}

关于iphone - 无法从异步 block 向主线程发送参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14133770/

相关文章:

javascript - 无法重现 TypeError : 'undefined' is not an object

ios - 您可以在 iphone 上录制视频/音频,同时播放单独的视频(可选音频)吗?

ios - 什么是 NSLayoutConstraint "UIView-Encapsulated-Layout-Height"以及我应该如何强制它干净地重新计算?

objective-c - iPhone 4 上 UIButton 缩放的按钮图像比模拟器或 iPhone 3 上显示的小得多

objective-c - 如何测量滑动的速度?

iphone - 单元格中未显示 UITableViewCellAccessoryDe​​tailDisclosureButton

iPhone:根据 Storyboard正确隐藏 UITableViewCell 中的附件按钮

iphone - 如何将 CAGradientLayer 旋转 180 度?

ios - 密码为 Apple 沙盒测试器 "this field is invalid"

ios - 删除除最后一个以外的所有事件