Titanium クラッシュするパターンをいくつか
2年以上Titaniumを使用していて、作っていてよくクラッシュするパターン
みたいなのがある程度わかってきたのでそれをいくつか紹介します。
Viewに色々つけて開きすぎ
テーブルレイアウトみたいに複数のViewを使用して
個別にタップ時の操作をした場合など、
viewにプロパティを追加してイベントリスナーからデータを取得する
なんてこと割とやるんですが、
これは結構たくさんやると落ちる原因になります。
単純にメモリリークっぽいですが、
この手のやつは実機でも起きるやつ起きないやつが発生してくるため
(現在の端末の状態とかもあるので)
このタイプの実装は楽なんですが、極力避けたほうが良いです。
代替案としてはviewにはIDとかだけ振っておいて、
イベントリスナーでIDを取得して、それをキーにDBから引っ張ってくるなど、
できるだけデータはviewに保持しないようにするといいです。
メモリの管理
自分はこんな感じで書くことが多いんですが、
var a=なにかインクルード;
var b=なにかインクルード
export.exec = function(){
return Ti.UI.createView(CSS.mainFrame);
};
この場合execで返したviewをメインで使用終了後nullしても
a,b,cが解放されません。
なのでめんどくさいんですが、
コンストラクタみたいなものを作ってa,b,c へのset unsetを行っています。
var a,b;
export.construct = function(){
a=なにかインクルード
b=なにかインクルード
};
export.destuct = function(){
a = null;
b = null;
};
export.exec = function(){
return Ti.UI.createView(CSS.mainFrame);
};
もちろんこれ以外にもメモリの管理は重要なのですが、
自分が作ったアプリが昔よく落ちていたのはこれが原因だったので、
これをピックアップしました。
まとめ
2つほど自分で作っていてよく落ちる場面をピックアップしました。
本当はもっといっぱいあるんでしょうけど、
なんとなくすぐ治ってしまうので記憶に残っていません。
Titaniumは動的にメモリを管理してくれるのがいいのですが、
それに頼りすぎないで、きちんと丁寧に書いていく基本的な事を
大事にしないといけないですね。