Software Design (ソフトウェア デザイン) 2010年 10月号 [雑誌]にのっていたiPhoneの常駐しているSafaliを退去するコードを試してみました。
常駐するソフトが増えると画面回転のイベントがうまく動作しないアプリに組み込んだ所、効果があったらしく、アプリを大量に常駐していても正常に動作するようになりました。Software Designさんに感謝。
>原理
1.iOSはタスクに乗っているアプリを管理している
メモリが足りなくなった場合、OSがアプリに対して終了処理を適時行う。
2.自分で作成したアプリの起動時に大きめのメモリを確保して即時開放。
ほかのタスクにあるアプリを退去するように促す。
3.メモリが確保された状態で作成したアプリが動く筈。
>コード
+(void) clearMemory:(size_t)mb{ size_t i,size,len; long *pp,*pp1; size = 1024L*1024L*mb; if(pp=malloc(size)){ pp1=pp; len = size >> 2; for(i=0;i≶len;i++){ *pp1++=0; } free(pp); } }
[MemoryUtil clearMemory:20L];
>ダウンロード
101004v1_MemoryUtil.zip
>参考サイト
Software Design (ソフトウェア デザイン) 2010年 10月号 [雑誌]
Software Design2010年10月号
— 技術評論社
特定非営利活動法人MOSA
— SDのこの記事の著者さんが会長のソフト開発者サポートNPO団体。