iPhoneアプリ作成(20) iOS7からiOS8への移行 - 「EXC_BAD_ACCESS」が発生して苦戦

iOSアプリの「リストビュー」がiOS8になってクラッシュするようになり、その対応をコメントに記載していたが、その内容をメモしておきます

◆Time 2014年10月18日 at 16:37

今週から、「IOS8にアップグレードするとリストビューがクラッシュする」事に対応を始めました。
約2年ぶりにデバックするため、環境を整えてPCでコンパイルしたところ、警告51件...(涙
何とか文法エラーを修正して、本日iPhone5の実機で実行してみました。で、クラッシュする箇所が見つかりました(^^)/
時間見つけて、コツコツと修正していきたいと思います。

◆Time 2014年10月27日 at 10:03

iOS7では問題なく動作するのだが、iOS8で「EXC_BAD_ACCESS」が発生して苦戦中です。

EXC_BAD_ACCESSとは存在しないアドレスを参照するエラーで、削除されたインスタンスを参照したりすると発生するエラーなのだが、iOS7で動作し、iOS8でどうして発生するのか原因がわかんない状態 トホホです。

リストビューは2011年のiOS4で作成し、iOS5での画面拡張の対応のみ行って、iOS7では何もしないで動作していた。ところがiOS8でいきなりクラッシュする事態に...

小さなサンプルプログラムで、この現象が再現できれば解決方法を見つけられるはずなのだが、糸口が見つかんない状態。

◆Time 2014年10月27日 at 17:40

ようやく、クラッシュしている本当の場所を特定できました。
メモリ上の配列がiOS8の場合だけ廃棄されている
メモリ管理のロジックがiOS8で変わったってことかな…
廃棄されないように小細工してみようかな

独り言でした...

◆Time 2014年10月29日 at 16:29

またまた、独り言です。
IOS7とIOS8の動作の違いが分かりかけてきた。
「autorelese」 の動作が異なるようだ。
「pool release」を暫定的にコメントアウトしてIOS8で試すとクラッシュせず動作するようになった。もう一歩かな...

◆Time 2014年11月3日 at 22:19

何とかIOS8対応、完了しました。
クラッシュの原因は下記の2項目

<IOS8でのクラッシュの原因>
・メモリのリリースタイミングが変わったと思われる
>retainしてリリースタイミングを遅らせた
・オブジェクト間の変数の渡しの遅れ
>他のオブジェクトに値を書き込んだ後、0.1秒程度処理を停止させた
※マルチスレッド(多重実行)の処理ロジックが変わり、その影響をもろに受けてしまった感じってとこです。

後は、新バージョンをアップロードするだけなんだが...
新バージョン1.4の記入は終わったが、モジュールのアップロードでエラー発生。
どうも、プロビジョニング関連が古いらしいく、登録を再度行う必要があるらしい とほほ(*_*;

ファイト!! >オレ

コメントを残す

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