AVAssetImageGeneratorCompletionHandler语言 - 如何设置或返回变量



我使用AVAssetImageGenerator从电影剪辑中获取图像,而不需要之前播放它。现在我有一个问题,如何在处理程序的循环中设置变量?这可能吗?我得到这个错误信息,不知道这是什么意思。(google>没有结果).

"变量不可赋值(缺失)__block类型说明符)"

所以我得问问专业人士。下面是代码。我想保存或返回我生成的imageData,所以我可以删除"setImage"消息在下面的处理程序。

UIImage* thumbImg = [[UIImage alloc] init];
AVAssetImageGeneratorCompletionHandler handler = ^(CMTime requestedTime, CGImageRef im, CMTime actualTime, AVAssetImageGeneratorResult result, NSError *error)
{
    if (result != AVAssetImageGeneratorSucceeded) 
    {
        NSLog(@"couldn't generate thumbnail, error:%@", error);
    }
    [button setImage:[UIImage imageWithCGImage:im] forState:UIControlStateNormal];
    thumbImg = [[UIImage  imageWithCGImage:im] retain];
    [generator release];
};

如果能了解这个就太好了。感谢您的宝贵时间。

首先,它似乎你不需要初始化你的thumbImg时,它的声明- UIImage对象创建在那一行将被覆盖在块,将泄漏。用nil值初始化它。

代码中的实际问题是,你要在block中更改的变量应该用__block说明符声明(如错误消息所示)。所以1s应该是

__block UIImage* thumbImg = nil;

相关内容

  • 没有找到相关文章

最新更新