いまさら iOS5 の話題で恐縮ですが、現時点では AppStore で iOS5 用のアプリがダウンロードできることもあり、現在保守しているアプリが iOS5 対応となっている以上、いちおう動作確認をしておかないといけないと思うわけです。それで、iOS5 のときだけアプリが落ちるという現象が見つかりました。
現象としては、ダイアログに乗っている WebView をスクロールさせてダイアログを閉じると、再度ダイアログを開こうとしたときに EXC_BAD_ACCESS が発生して落ちてしまうというものです。
ゾンビオブジェクトを追跡できるようにして実行したところ、下記のようなログが残っていました。

-[UILayoutContainerView setUseFastMode:]: message sent to deallocated instance 0x10075920

ゾンビオブジェクトを追跡するための設定は、下記のサイトを参考にしました。
深淵へ – ゾンビオブジェクトを検出する (Xcode編) – Kazzzの日記
http://d.hatena.ne.jp/Kazzz/20120109/p1
得られた情報をもとにググってみると、下記のページが見つかりました。スクロールが動作しているときに閉じると落ちるようです。TableView でも似たような現象があるらしいので、ScrollView に関係するオブジェクトだと問題があるようです。
objective c – App crashes when Back button tapped while scrolling table view – Stack Overflow
http://stackoverflow.com/questions/10146660/app-crashes-when-back-button-tapped-while-scrolling-table-view
ダイアログが閉じる瞬間にスクロールが止まっていれば良いようなので、viewWillDisappear に下記のように記述したら落ちる問題は解消しました。

– (void)viewWillDisappear:(BOOL)animated
{
[self.webView.scrollView setContentOffset:self.webView.scrollView.contentOffset animated:NO];
}


0件のコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください