私は、画像間に2秒の遅延を加えて、300枚ほどの画像を順番にめくる必要があるアプリに取り組んでいます。
これらの画像は、表示中にオンザフライで生成されるバーコードです。保存された画像ではありません。
ディスプレイはナビゲーションコントローラーにあり、存在しないインスタンスに送信されたセレクターからアプリがクラッシュすることなく、ユーザーが「戻る」ボタンをクリックできるようにしたいと考えています。
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 の例だけを指摘しないでください。私はすでにそれらすべてを見てきましたが、アニメーション中にこれらすべての画像をメモリに保持する必要はありません。アニメーション中にその場で画像を生成する方法があれば、それは興味深いでしょう。