我正在开发一个应用程序,该应用程序需要依次翻转 300 张左右的图像,图像之间有 2 秒的延迟。
这些图像是在显示过程中动态生成的条形码。它们不是存储的图像。
显示在导航控制器中,我希望用户能够单击“后退”按钮,而不会因为选择器被发送到不再存在的实例而导致应用程序崩溃。
我知道可以为 UIImageView 设置动画,但由于内存问题,我不想创建大量图像。
我想在循环中执行此操作,生成条形码,显示图像,延迟 2 秒,然后重复下一张图像。
以下代码有效,但如果单击“返回”按钮会崩溃,并出现“发送到已释放实例的消息”错误。
NSSet *dataSet = [self fetchDataSet];
for (MyBarCode *data in dataSet) {
// display barcode in UIImageView
[self updateBarCodeImage:data ];
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow: 2.0]];
}
似乎没有办法取消这个计时器,或者我可以在 viewWillDisapear 中做到这一点。
这样做的正确方法是什么?
请不要只指出animationImages 示例。我已经看过所有这些了,而且——再一次——我不想在动画期间将所有这些图像都保存在内存中。如果有一种方法可以在动画期间动态生成图像,那将会很有趣。