iPhone/iPadアプリのiOS5対応

iPhone/iPadアプリのiOS5対応ASのおもちゃ箱開発ブログ最初のiPhoneアプリをリリースして、1年半。放置していましたが、サポートサイトに「iOS5で動かないよ」という書き込みが。
最新のXCodeでコンパイルし直せばいいんじゃないのと、mac miniを立ち上げて、最新版のXCodeをインストールしようとすると、「Lionに上げろ」という。しょうが無い確かオンラインでダウンロードしてアップデートできたはずと、インストールしようとすると、「Core 2 Duo以上じゃないとだめ」といういう。残念!!うちのmac mini は、Core Soloでした。
数千円の売上しか上がってないのに、数万かけて新環境をつくるのもなんだかなあと思っていたら、知り合いからMacBookを借りることができたので、調査を始めました。

Lionまでインストールされていた状態だったので、XCodeの最新版をインストール。
プロジェクトを取り込んでみると、Warningがいくつかでていたので、それはちゃちゃっと直す。
さて、iOS5エミュレーターで実行。
だめでした。。。

EXC_BAD_ACCESSとか言っているので、何かメモリアクセスの部分でエラーになっているようです。
しかし、デバッガがとまった場所は、appleのライブラリ内なので、自分のコードのどこが影響しているのかわかりません。
Googleでいろいろ検索したところ、以下のサイトにたどり着きました。

http://program.station.ez-net.jp/special/xcode/xcode4/leak-check.asp

簡単に設定を記すと、
(1)アップルメニューのProductからEdit Scheme…を選択。
(2) “Run” スキームの “Diagnostics” タブの中から “Enable Zombie Objects” を選択。
で、エラーの原因となっているところがわかるらしい。
では、実行!!
おお!!確かに、自分のコード内でひっかかりました。

さて、ここからが本題。
ポインタ変数にアクセスしているところで、エラーになっている様子。
さて、ここでもいろいろググります。
で、たどり着いたサイトがここ。

http://www.zero4racer.com/blog/88

「2.オブジェクト型を生成する時には、必ずプロパティを作成する」の項目が該当していたよう。
ここで記載されているようにポインタ変数を、@property,@synthesize宣言した上、アクセスするときは、self.xxxxxのようにアクセスすとことが必要ということらしい。

さて、上記の修正を施した後、実行。
さて、どうか。。。。うまくいった!
やった~

iOS5になって、メモリ管理が厳しくなったようですね。

あとは、リリースするだけと思ったが、そこにも難関が。。。
続きは次のエントリで。

コメントを残す

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


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>