スーパームーンって言うので、ジョギングがてら、空見てみた。
綺麗に丸い月が出ていたが、そんなに大きいとは思わんかったな。
どのへんがスーパーなのか???
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);
が必要なのかと書いたところ、バグという風にデバッガに怒られてしまった。
どうやら、ドキュメントの開放だけでいいみたい。
とりあえず、
ココ参考にしました。