我使用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;