先日の記事でアニメーションするボタンを追加し、あれから実機でいろいろテストしてた。順調かなーと思ってたが、バグが!!
「しふと暦」を起動したあとホームボタンでバックグランドに移行
↓
いろんなアプリを起動してある程度メモリを消費
↓
「しふと暦」をまた起動(フォアグランド)すると
なぜか矢印が重なって表示される・・・。
メモリ消費したあとだからボタンを貼付けているViewControllerの「didReceiveMemoryWarning」や「viewDidUnload」が呼ばれて、再表示とともに「loadView」がまた呼ばれたのかなと思い、「didReceiveMemoryWarning」にボタンのリリース処理を書いてもダメ。「loadView」でボタンを貼付ける前にボタンのリリース処理をかいてもダメ。(そもそもiOS6では「viewDidUnload」が呼ばれないので「loadView」も呼ばれない、らしい。)その他にもUIViewControllerのライフサイクルを調べてViewControllerでいろいろやってみたがダメだった。
ハマったなーと思い何気にViewControllerとボタンのデリケードにLogを入れてみてみたら、「あれ、フォアグランドに戻ってからはボタンのdrawRectしか呼ばれてない・・・」!!てっきりメモリ関連のことなので原因はViewControllerにあると思ってたけどボタンのほうだった。
そのあとは矢印レイヤーを貼付ける前に「self.layer.sublayers = nil;」の処理でサブレイヤーを初期化したら問題は解決した。たったこの一行で・・・。
ハマるってこわい。