iPhoneのPDF読み込みのメモリ解放について

2014年9月9日

xcode

スーパームーンって言うので、ジョギングがてら、空見てみた。 綺麗に丸い月が出ていたが、そんなに大きいとは思わんかったな。 どのへんがスーパーなのか??? 1ヶ月ほど、欲しいアプリの1位だった、PDFのリーダーアプリで、欲しい機能を付けた読書アプリを作ってみて、朝、会社に出勤する時にデバッグがてら、ユーザー気分で使ってみた。 すると、ある一定の時間使うと、アプリ内でPDFののページが読み込まれなくなったり、アプリがプッツリと落ちる不具合に何度か遭遇した。 経験上、こればメモリ障害ということはすぐに分かった。 xcodeにiPhone端末をつないでいた時に、ビジュアルデバッガでのメモリ値も、ページをめくるたびに、増加していたことは、よく覚えている。 やはりモバイル端末、なんと非力なことか・・・ とはいっても、こういうメモリリーク系は、ちゃんと対応しないと、使用しているとストレスがたまるアプリになってしまい、使いづらいと言われる事間違いなしという事なので、真摯に対応する事にした。 調べてみると、やはりメモリ解放ができていないっぽい。 iOS5ぐらいから、autoreleaseがいらなくなったので、メモリって自動で開放されているんだろうとフレームワークをあまりにも信用しきっていたが、objective-cはそうではないらしい。 結論から言うと、PDFのを使っている場合に限って、下のようなコードが必要なようだ。 CGPDFDocumentRef docs = CGPDFDocumentCreateWithURL((CFURLRef)url); ----- NSNumber *num = [NSNumber numberWithInt:(int)CGPDFDocumentGetNumberOfPages(docs)]; //メモリ解放(※ここが必要) CGPDFDocumentRelease(docs); ----- PDFのドキュメントを開いて、作業後、ちゃんと閉じてあげないと行けないってことね。 ちなみに、ページを読み込んだ後に、 CGPDFPageRelease(page); が必要なのかと書いたところ、バグという風にデバッガに怒られてしまった。 どうやら、ドキュメントの開放だけでいいみたい。 とりあえず、ココ参考にしました。

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。