なんでもいいから書くブログ。iPhoneアプリやAndroidアプリといったスマートフォンアプリを開発していこうと考えてはいるが、はたしてどこまでできるか、、とにかく記録していこうと思い書いているブログである。有益な情報はあるかもしれないし、ないかもしれない。
iPhone開発。
またEXC_BAD_ACCESSでハマってしまった。
iPhoneアプリを開発していれば、誰しもこれでハマった経験はあるだろう。
EXC_BAD_ACCESSと出力してフリーズだ。。
いつも発生するならまだしも、たまに発生するケースは厄介。場所が特定できないので。
まぁ原因は、メモリ管理。releaseし過ぎか、retain忘れか。。
で、場所を特定しやすくする方法があったので紹介。
左ペインの「実行可能ファイル」にある実行ファイルをダブルクリックし
そこの引数タブの環境変数に「NSZombieEnabled」を追加して値を「YES」にする。
メモリ解放されずにゾンビとして生き残るということか。
これで、がんばって?!EXC_BAD_ACCESSを発生させる。
運が良ければ?!コンソールに何かしら出力される。
*** -[NSIndexPath release]: message sent to deallocated instance 0x5c5b610
やはり既に解放されているアドレスへのアクセスか。
でもこれで、NSIndexPath ということがわかった。
コールスタックも見覚えのある呼び出し(黒で表示されている部分)があったので、クリック。
- (void)dealloc {
[lastIndexPath release];
...
lastIndexPathという変数だ。こいつが原因!
代入している部分を検索したら、
lastIndexPath = indexPath;
こんな箇所が。。この変数はプロパティにしているので、
self.lastIndexPath = indexPath;
が正解。(lastIndexPath = [indexPath retain]; これでもいいけど。)
self. にするかしないかで全く違うのです。
というか、プロパティだからセッターが呼ばれて、
その中で、古いのrelease 新しいのretain ってやってくれているだけだ。これ重要。
またEXC_BAD_ACCESSでハマってしまった。
iPhoneアプリを開発していれば、誰しもこれでハマった経験はあるだろう。
EXC_BAD_ACCESSと出力してフリーズだ。。
いつも発生するならまだしも、たまに発生するケースは厄介。場所が特定できないので。
まぁ原因は、メモリ管理。releaseし過ぎか、retain忘れか。。
で、場所を特定しやすくする方法があったので紹介。
左ペインの「実行可能ファイル」にある実行ファイルをダブルクリックし
そこの引数タブの環境変数に「NSZombieEnabled」を追加して値を「YES」にする。
メモリ解放されずにゾンビとして生き残るということか。
これで、がんばって?!EXC_BAD_ACCESSを発生させる。
運が良ければ?!コンソールに何かしら出力される。
*** -[NSIndexPath release]: message sent to deallocated instance 0x5c5b610
やはり既に解放されているアドレスへのアクセスか。
でもこれで、NSIndexPath ということがわかった。
コールスタックも見覚えのある呼び出し(黒で表示されている部分)があったので、クリック。
- (void)dealloc {
[lastIndexPath release];
...
lastIndexPathという変数だ。こいつが原因!
代入している部分を検索したら、
lastIndexPath = indexPath;
こんな箇所が。。この変数はプロパティにしているので、
self.lastIndexPath = indexPath;
が正解。(lastIndexPath = [indexPath retain]; これでもいいけど。)
self. にするかしないかで全く違うのです。
というか、プロパティだからセッターが呼ばれて、
その中で、古いのrelease 新しいのretain ってやってくれているだけだ。これ重要。
PR
Comment form
YamaTatsuのiPhoneアプリ
iTunes Store でみる
Light Off Hot New
点いたライトを素早く消そう!
誰でも遊べるシンプルなゲームです
めいろであそぼう New
かわいいイラストのめいろ、ぬり絵もできる
子供向けの迷路あそびです。※iPad専用
運試し NEW
15連続の確率は0.0001%
操作は簡単 好きなパネルを選ぶだけ。どこまで進めるか運試し!
連打! まだまだ人気
16連射に挑戦
10秒間で何回ボタンを押せるか競うゲームです。
うちメモ ★大人気★
買い物中に 「まだあったかな?」 と思った経験 ありませんか? 「うちメモ」していれば大丈夫!!
Best Bowling
マイボウラーに大人気! ボウリングのスコアを管理するアプリです。
イメージ貯金
貯金はモチベーションが重要! 目標を設定して毎日楽しく貯金しよう!
Mine Escape
聴力は優れていますか? 音で機雷の位置を判断する新感覚のアクションゲーム!
Rank Checker
だって気になるじゃないですか、、 アプリ開発者必須! AppStoreのランキングをチェックツールです。
点いたライトを素早く消そう!
誰でも遊べるシンプルなゲームです
めいろであそぼう New
かわいいイラストのめいろ、ぬり絵もできる
子供向けの迷路あそびです。※iPad専用
運試し NEW
15連続の確率は0.0001%
操作は簡単 好きなパネルを選ぶだけ。どこまで進めるか運試し!
連打! まだまだ人気
16連射に挑戦
10秒間で何回ボタンを押せるか競うゲームです。
うちメモ ★大人気★
買い物中に 「まだあったかな?」 と思った経験 ありませんか? 「うちメモ」していれば大丈夫!!
Best Bowling
マイボウラーに大人気! ボウリングのスコアを管理するアプリです。
イメージ貯金
貯金はモチベーションが重要! 目標を設定して毎日楽しく貯金しよう!
Mine Escape
聴力は優れていますか? 音で機雷の位置を判断する新感覚のアクションゲーム!
Rank Checker
だって気になるじゃないですか、、 アプリ開発者必須! AppStoreのランキングをチェックツールです。
カレンダー
Twitter
プロフィール
最新記事
(05/22)
(04/30)
(03/16)
(03/07)
(02/08)
最新トラックバック
ブログ内検索
忍者アド
アクセス解析