iPhoneアプリ開発グループトップ最新の日記ユーザー登録ヘルプf-shinの日記ああああ<前の5日分2009-03-01iPhoneとWebサービスの連携手法というのを書きました。Garage:iPhoneとWebサービスの連携手法http://www.milkstand.net/fsgarage/archives/001534.htmlコメントを書く2009-02-18iMovatwitterがリリースされていました。|激戦区のtwitterクライアント市場に、無謀にもモバツイッターのiPhoneクライアントを投入いたしました。みなさん情報、アドバイスありがとうございました。m(__)mちょっとここ数日元気がなく、どうも自信が出てこないので、まともにプロモーションをする気力がないのですが、とりあえず今回は有料版のプロセスを経験することが何よりもの目標でした。深津さんのお話を聞いていてやってみようと思ったのがきっかけです。Contructについてリリースまでのプロセスをメモしておきますので、ご参考いただければ幸いです。contructとなる。元データは日本語です。【2/3】に、検討するから待ってねという返信が来る〜そのまま一週間待つ〜【2/9】に、1週間前にレビューするって言ってた内容はどうなりましたか?というメールを送る。Connectはちょっと待ってねという連絡が来る。Contructの進捗なし。Contructの処理を進めてねと念押しを送る。【2/18】に、アプリがリリースされていた模様。W-8BENについては、昨年末に送ってありました。Contructに油断してたので無料版を何も手をつけていませんでした。同一ソースを共有して、無償版と有償版を管理する方法って、どなかたか書かれてましたよね。探して、無償版についても作業を進めたいと思っています。|前にreleaseの使い所がよくわからんと書いたのですが、なんとなく理屈はわかってるつもりだったものの、どうにもカラダが覚えてないなぁと思ってたので、カフェで以下のエントリーをじっくり読んだら敵が見えるようになった。第10回」から数ページ読む。http://www.remus.dti.ne.jp/~yoshiki/cocoa/ed1/10/index.htmlガベージコレクション脳が板についたままautoreleaseに頼るのがそもそも間違っていることと、autoreleaseの解放処理はイベントループでほいほい実行されているからこそ、メソッドを抜けた後で、うっかりミスするとあっさり落ちるんだ、というあたりが見えたら、ソースの見え方が変わった感。|■現状の問題点:実機で写真を2枚撮るとアプリが落ちる■現状:写真を撮ったら、その写真を縮小表示してコメントをつけられるダイアログウインドウ的なものをサブウインドウとして表示している。■問題点:当然、初回表示時は、viewの初期化処理が走るが、写真を2枚撮った後に、再度、viewの初期化処理が走っていて、その初期化処理終了時に、カーネル保護違反みたいなエラーが出て落ちている模様。単純に「そのウインドウを開く/閉じる」というボタン(が別にある)では、viewDidLoadは走らない。■初期化手順:viewDidLoadイベントの中で、viewの初期化処理が走っている。その初期化処理が二度走るとエラー???でも、そこを二回実行しないようにしてもうまく動かないので、初期化内部の処理に地雷がある?■TODO:1.二度目のviewDidLoadはどういうタイミング、理由で実行されるのか?を調べる。2.一度目の実行はOKなのに、二度目で落ちているなら、二度目の実行で支障のあるコードになっているわけだから、そこの不整合点を調べる。・そもそもviewDidLoadでviewの初期化をしてよいのか?・ダイアログウインドウを閉じる処理の方で開放しておくべきメモリはないのか?・むしろ必ずviewDidLoadが走るような毎回初期化するような状態にした方が良いのか?・そもそもそういう方法で別窓を実装して良いの?(addSubview、removeSubView?あたり。夏ライオンの書き込み窓を参考に。)ここが解決できたら、ほぼほぼアップできる見通し。10:29お世話になってます。同じ現象かはわかりませんが、似たようなことがあり軽く調べて根本的な原因はよくわかりませんでしたが簡単に言うと、viewが作り直されている感じです。(viewのアドレスが変わっていたので、たぶん)なので、viewがそのままで存続していることを期待して変数とかオブジェクトとか参照していると、落ちる原因になります。なんの裏付けも無い超直感ですが、このviewが再構築される現象は残メモリの状態で変わってくると思います。ここらへんまた、UIImagePickerView以外でも画面遷移の際に(NavigationCtrlのpop/pushとかでも)発生しました。自分の場合は、処理フローを見直してviewが再構築されても問題ないようにして回避しました。これが正解かどうかは正直わかりません。いうかむしろ自信ありませんが。しておけば回避できるかもしれません。これも何も試していない超直感ですが。16:23えーとですね、それはカメラ系アプリを作るとよく発生する地雷の1つです。UIViewControllerサブクラスはディフォルトは、メモリ不足のイベントを取得すると、自分のviewがsuperViewを持っていない場合、viewを開放するという凶悪仕様になっているのですね。いった具合にビューが多重生成されるわけです。打開策としてはメモリ不足の警告を無視するのが1つ、もう1つはビューが完成したときに行った処理は全部、ビューが強制開放されるときにreleaseされるようにすることです。ここら辺をやっとかないと、無限メモリ不足や、nilによるBADAccessで死んじゃいます。16:27ToyCameraやQuadCameraの場合、アプリのメモリ最大限使用量した場合もアプリが落ちないことが検証済なので、一度作成したviewはメモリ不足イベントを受けても開放しないようにしています。17:27僕も今週それではまりました。18:38f-shinさんの場所でお礼いうのもなんですが、>fladdictさん半分勘でやってたことだったので(おぃ、とても参考になりました。ありがとうございます。場所借りてしまってすみません。03:18ありがとうございます。元ウインドウの参照までごっそり消えていたので初期化の仕方そのものを変えて行かなくてはいけないのは参りました。ない場合自動生成されるので、ちょっと楽になるかと。http://zolgovimcpfa.com/2009-01-20カメラで連射・・・できるんだよねぇ・・・。|今、自分で作ってる奴が、写真を2枚撮るとメモリが枯渇して落ちるんだけど、写真を連射できるんなら頑張れば大丈夫だよね。WebViewを組み込んでる部分がメイン機能なんだけど、Webページをクリックするたびに利用メモリが増えていくという、なんとも言えないプレッシャーが。Instrumentsで見る限り、そんなにメモリリークが検出されないんだけど、その代わりメモリを暖め過ぎなのかなぁ。次に書くコメントを書く<前の5。