なんでもいいから書くブログ。iPhoneアプリやAndroidアプリといったスマートフォンアプリを開発していこうと考えてはいるが、はたしてどこまでできるか、、とにかく記録していこうと思い書いているブログである。有益な情報はあるかもしれないし、ないかもしれない。
iPhone開発ネタ。
UIImagePickerController を使用して、写真を撮れるようにしたのだが、(実機の動作確認で)メモリ警告が発生して落ちまくった。。
それまで、メモリ警告は特に意識していなかったが、UIImagePickerController はメモリをいっぱい使うのだろう。(あと、iOS4にしてからマルチタスクなのでアプリ残骸が多々あるせいでもある。。きっと。)
まずハマったのが、なぜ落ちるのか。当然、既に存在しないアドレスにアクセスしてるからだろうが、どこだ??
地道にコールスタックでどこまで処理が呼ばれているか確認していき、ようやく発見。
これは単純なミスだった。release し過ぎて、dealloc でコケていただけ。
次に、カメラ起動後、メモリ警告のせいで、ビューが初期化されてしまい、設定していた値が初期値に戻ってしまう問題。
考えた対処方法は、didReceiveMemoryWarning で値をファイルに書き込んでおき、
viewDidLoadでその一時ファイルがあれば、その値を設定するという方法。
で、値を保存しようと思ってdidReceiveMemoryWarning で拾っても、あれ、、すでにnilじゃん。。
LOGを吐いて呼ばれる順番を確認したら、viewDidUnloadのあとにdidReceiveMemoryWarning が呼ばれている。うーん。viewDidUnloadですでに解放しているし。。
この辺がややこしや。実際は、上の階層のViewControllerのdidReceiveMemoryWarning で下の階層のviewDidUnload が呼ばれているようだった。(ナビゲーションコントローラね。)
しょうがないので、上の階層のViewControllerのdidReceiveMemoryWarning でviewControllersをぐるぐる参照しながら、目的のコントローラに設定されている値をファイルに書き込むように修正。
ふー。
新アプリを作り始めた段階だったので、メモリ警告も考慮して作っていこう。
前作は修正無理だな。まだ申請中だけど。まぁテスト時に一回もメモリ警告でていないので、大丈夫なんじゃないかなぁ。。写真撮影使っていないし。
メモリ警告のデバッグポイントは、AppDelegateのapplicationDidReceiveMemoryWarning
から、順に呼ばれるdidReceiveMemoryWarning と viewDidUnload を追っていくこと。
コールスタックでどこで落ちているかつきとめること。
まぁだいたいはあれだ、既に解放されてやんのってやつだ。
UIImagePickerController を使用して、写真を撮れるようにしたのだが、(実機の動作確認で)メモリ警告が発生して落ちまくった。。
それまで、メモリ警告は特に意識していなかったが、UIImagePickerController はメモリをいっぱい使うのだろう。(あと、iOS4にしてからマルチタスクなのでアプリ残骸が多々あるせいでもある。。きっと。)
まずハマったのが、なぜ落ちるのか。当然、既に存在しないアドレスにアクセスしてるからだろうが、どこだ??
地道にコールスタックでどこまで処理が呼ばれているか確認していき、ようやく発見。
これは単純なミスだった。release し過ぎて、dealloc でコケていただけ。
次に、カメラ起動後、メモリ警告のせいで、ビューが初期化されてしまい、設定していた値が初期値に戻ってしまう問題。
考えた対処方法は、didReceiveMemoryWarning で値をファイルに書き込んでおき、
viewDidLoadでその一時ファイルがあれば、その値を設定するという方法。
で、値を保存しようと思ってdidReceiveMemoryWarning で拾っても、あれ、、すでにnilじゃん。。
LOGを吐いて呼ばれる順番を確認したら、viewDidUnloadのあとにdidReceiveMemoryWarning が呼ばれている。うーん。viewDidUnloadですでに解放しているし。。
この辺がややこしや。実際は、上の階層のViewControllerのdidReceiveMemoryWarning で下の階層のviewDidUnload が呼ばれているようだった。(ナビゲーションコントローラね。)
しょうがないので、上の階層のViewControllerのdidReceiveMemoryWarning でviewControllersをぐるぐる参照しながら、目的のコントローラに設定されている値をファイルに書き込むように修正。
ふー。
新アプリを作り始めた段階だったので、メモリ警告も考慮して作っていこう。
前作は修正無理だな。まだ申請中だけど。まぁテスト時に一回もメモリ警告でていないので、大丈夫なんじゃないかなぁ。。写真撮影使っていないし。
メモリ警告のデバッグポイントは、AppDelegateのapplicationDidReceiveMemoryWarning
から、順に呼ばれるdidReceiveMemoryWarning と viewDidUnload を追っていくこと。
コールスタックでどこで落ちているかつきとめること。
まぁだいたいはあれだ、既に解放されてやんのってやつだ。
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)
最新トラックバック
ブログ内検索
忍者アド
アクセス解析