質問: タイマーを利用してtoyImageCustomViewを4秒おきに生成し、画面の外まで移動したら、 そのtoyImageCustomViewを消していく。と言う、アニメーションをやりたいのですが、 なぜか、最初のtoyImageCustomViewが画面の外で消えると同時に最後のtoyImageCustomViewも 画面の途中にもかかわらず、消えてしまいます。 この原因がどうしてもわかりません。 どなたかご教授願えないでしょうか? よろしくお願いいたします。 ![タイマーを動かすコードです。](https://i.stack.imgur.com/CDVEN.png) ![タイマーによって動かすアニメーションです。](https://i.stack.imgur.com/539jN.png)
回答: 275行めでインスタンス変数の`toyImageCustomView`をタイマーでこのメソッドが呼ばれるたびに上書きしているので、`toyImageCustomView`に入っているのはアニメーションで順に動かしている最後のビューということになります。 (4秒ごとに呼ばれて1つのアニメーションが30秒なので、7枚めか8枚めのビューになります。) そして最初のビューのアニメーションが終了して、`completion`ハンドラで**インスタンス変数の**`toyImageCustomView`を削除しているので、消えるのは最初のビューではなくて、最後のビューになります。 とりあえず、簡単に修正するのなら、`toyImageCustomView`をインスタンス変数にするのではなく、ローカル変数にして、クロージャに毎回キャプチャして、キャプチャした変数に対してメソッドを呼べばいいと思います。