

タイマーを利用してtoyImageCustomViewを4秒おきに生成し、画面の外まで移動したら、  
そのtoyImageCustomViewを消していく。と言う、アニメーションをやりたいのですが、

なぜか、最初のtoyImageCustomViewが画面の外で消えると同時に最後のtoyImageCustomViewも  
画面の途中にもかかわらず、消えてしまいます。

この原因がどうしてもわかりません。

どなたかご教授願えないでしょうか？  
よろしくお願いいたします。

[![タイマーを動かすコードです。](https://i.stack.imgur.com/CDVEN.png)](https://i.stack.imgur.com/CDVEN.png)  
[![タイマーによって動かすアニメーションです。](https://i.stack.imgur.com/539jN.png)](https://i.stack.imgur.com/539jN.png)


CC BY-SA 3.0
2016-04-03T08:22:58.933
23696
2016-04-03T10:51:25.800
15016
question
swift
Timerを使ったアニメーションで予定外の動きに困っております。


275行めでインスタンス変数の`toyImageCustomView`をタイマーでこのメソッドが呼ばれるたびに上書きしているので、`toyImageCustomView`に入っているのはアニメーションで順に動かしている最後のビューということになります。  
（4秒ごとに呼ばれて１つのアニメーションが30秒なので、７枚めか8枚めのビューになります。）

そして最初のビューのアニメーションが終了して、`completion`ハンドラで
**インスタンス変数の**`toyImageCustomView`を削除しているので、消えるのは最初のビューではなくて、最後のビューになります。

とりあえず、簡単に修正するのなら、`toyImageCustomView`をインスタンス変数にするのではなく、ローカル変数にして、クロージャに毎回キャプチャして、キャプチャした変数に対してメソッドを呼べばいいと思います。


CC BY-SA 3.0
2016-04-03T10:51:25.800
23699
2016-04-03T10:51:25.800
5519
23696
answer