我正在使用AVAssetImageGenerator从动画片段中获取图像而不播放它。现在我有一个问题如何在处理程序的循环中设置变量? 可能吗? 我收到此错误消息,不知道这是什么意思。 (谷歌>没有结果)。
“变量不可分配(缺失 __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];
};
了解这一点会很棒。 谢谢你的时间。
答案 0 :(得分:21)
首先,似乎你不需要初始化你的thumbImg,当它在该行中创建的声明的UIImage对象将在块中被覆盖并且会泄漏。只需用零值启动它。
代码中的实际问题是,您要在块中更改的变量应使用__block说明符声明(如错误消息所示)。所以你的1s行应该是
__block UIImage* thumbImg = nil;