「しふと暦」機能追加 その2 ハマった!! | iPhoneアプリ開発日記

iPhoneアプリ開発日記

アプリ開発に関するいろいろな事

先日の記事でアニメーションするボタンを追加し、あれから実機でいろいろテストしてた。順調かなーと思ってたが、バグが!!

「しふと暦」を起動したあとホームボタンでバックグランドに移行
   ↓
いろんなアプリを起動してある程度メモリを消費
   ↓
「しふと暦」をまた起動(フォアグランド)すると

なぜか矢印が重なって表示される・・・。

メモリ消費したあとだからボタンを貼付けているViewControllerの「didReceiveMemoryWarning」や「viewDidUnload」が呼ばれて、再表示とともに「loadView」がまた呼ばれたのかなと思い、「didReceiveMemoryWarning」にボタンのリリース処理を書いてもダメ。「loadView」でボタンを貼付ける前にボタンのリリース処理をかいてもダメ。(そもそもiOS6では「viewDidUnload」が呼ばれないので「loadView」も呼ばれない、らしい。)その他にもUIViewControllerのライフサイクルを調べてViewControllerでいろいろやってみたがダメだった。

ハマったなーと思い何気にViewControllerとボタンのデリケードにLogを入れてみてみたら、「あれ、フォアグランドに戻ってからはボタンのdrawRectしか呼ばれてない・・・」!!てっきりメモリ関連のことなので原因はViewControllerにあると思ってたけどボタンのほうだった。

そのあとは矢印レイヤーを貼付ける前に「self.layer.sublayers = nil;」の処理でサブレイヤーを初期化したら問題は解決した。たったこの一行で・・・。

ハマるってこわい。