Titanium何度も同じ内容のWindowをcreateしまくっていいのだろうかと言うこと。何かボタンを押すたびに以下のようなコードを実行するとする。'ほげほげ',});Ti.UI.currentTab.open(newWin);これで新しい画面に遷移した後、元の画面に戻ってまたボタンを押したら同じ内容のWindowがまた作られて、リソースを圧迫していくのではないかということが心配になる。都度createしないで再利用すべきなのだろうか。再利用しないとWindowはどんどん増えていくのか?この懸念に関してはWindowがフォーカスを失ったときにcloseされるので問題ないようだ。hogehoge.jsに以下のようなコードでWindowオブジェクトが破棄される様子を確認できる。Ti.API.info(win.checkReuse);});これで画面遷移を繰り返すと以下のようなログが表示される。<null>再度表示したときのcheckReuseの内容はnullになっている。一度フォーカスを失って二度目に表示したときに最初に表示したときの状態を維持してない。二度目の表示の際に作り直されている。再利用はできるのか?生きているオブジェクトに参照が残っていれば破棄されないので、他のオブジェクトのプロパティとしてくっつけておけば再利用は可能。Ti.UI.currentTab.open(mainWin.hogehogeWin);呼び出し元のコードを上記のようにして実行すると以下のようなログになる。reuse?Windowオブジェクトのcloseイベントは呼び出されるが、checkReuseの内容は生きている。再度表示したときも以前の状態を保持しており、破棄はされていないことがわかる。あら、破棄されて無くてもcloseイベントは呼ばれるのですな。明示的に再利用するべきか?作成と破棄を繰り返す方がコード的にはシンプルになるので基本的には再利用しないに一票。あとはパフォーマンス的に何か問題が出たとき考えるのがよいかと。1.5.1)一番下の方にUIオブジェクトの仕組みについて書いてある。Windowごとにjsファイルを分けておくと、Windowが閉じたときに即座にリソースがクリーンナップされて、リソースの節約になるよって書いてあるね。実はメモリリークする問題がある模様。leak?では再利用するようなコードを書いた方がいいのかと言うと、試してみたらそうしても遷移を繰り返すとメモリ消費が増えていくのでダメみたい。急激に増えていくわけでもないので、これは割り切るしかないのかな。関連記事CoffeeScriptの@ではまった話つまりJavaScriptのthisではまった話なんだけども。とあるAPIからhttpでデータを取得するという処理。TitaniumTitaniumが生成したObjective-Cのコードを修正する禁断の技に手を染めてみたメモ。この技は相当の技術的負債をともなうため、非推奨。TitaniumrequireでTitaniumのインクルードパスの問題を解決するTi.includeじゃなくてrequireを使うと幸せになれるっぽい。CommonJSでJavaScirptのモジュールを定義することになるので、Ti.includeをそのまま置き換えることはできないけど。[...]検索:書いてる人サーバーサイドのインフラ構築とプログラミングをたしなむハーフスタックくらいのフリーランスプログラマー。カメラはペンタックス。