【原文】http://erinylin.blogspot.com/2011/11/some-tips-to-avoid-leaking-memory-in.html (需要FQ)
Titanium Mobile 真的是一個易學的跨平台 Mobile App SDK,不過由於 Javascript 的自由撰寫風格,外加一般使用者並不了解 Titanium Mobile SDK 倒底中介了什麼,往往開發到後期發現 App 在 runtime 時常出現 out of memory issue,用盡了各種方法「抓漏」也搞不懂為什麼 ?這個時候你就會開始沮喪,然後內心的 OS 狂叫著:「為什麼我不乖乖的學 Objective-C or Java!!!!!」
其實只要堅持幾種撰寫原則,就可以將記憶體漏失傷害降到最低。
以下是幾個簡單用來避免記憶體漏失的技巧:
1. 使用 namespace 來寫作避免混亂 global scope
//專案名稱的 namespace
var Ns = {};
//處理 ui
Ns.ui = {};
//處理 model
Ns.model = {};
//處理 control
Ns.control = {};
2. Using factory method to create instance.
使用工廠方法製作實體
Ns.ui.createMainWindow = function(){
var win = Ti.UI.createWindow({
title: 'Hello world'
});
//其他要放置在 main window 的 view components 都寫在這邊
//記得回傳實體
return win;
}
var mainWin = Ns.ui.createMainWindow();
mainWin.open();
3. 小心使用 Ti.App.addEventListener 等 Ti 系列的 global event listener (最強兇手)
如下範例:
Ns.ui.createTestWindow = function(){
var win = Ti.UI.createWindow({
title:'Test'
});
var label = Ti.UI.createLabel({
text:'hahaha'
});
win.add( label );
//如果監聽客製 event views:hoho 順便將 label 引入
Ti.App.addEventListener('views:hoho', function(){
//label 是 local variable 喔!!!!
label.text = 'hohoho';
});
/*
* 重點!! 當 global event listener 接受了 local variable 時,
* 就請記得在 win.close() 的時候也要一併移除 event listener
*/
return win;
}
4. 無腦的最終手段!!真的找不到哪邊漏水的話視窗關閉時請直接將所有實體關閉或指定 null
Ns.ui.createMainWindow = function(){
var win = Ti.UI.createWindow({
title: 'Hello world'
});
var label = Ti.UI.createLabel({
text:'hahaha'
});
win.add( label );
//自定 win close 要另外執行的 function
win.addEventListener('close', function(){
win.removeEventListener( 'close', arguments.callee );
win.remove( label );
label = null;
//再 close 一次也不會出事
win.close();
win = null;
});
return win;
}
分享到:
相关推荐
### Titanium Mobile API 知识点详解 #### 一、Titanium Mobile API 概述 Titanium Mobile API 是一款由 Appcelerator 公司提供的用于跨平台移动应用开发的强大工具包。该工具允许开发者使用 JavaScript 编写应用...
Titanium Mobile SDK 3.1.0 是一个用于构建原生移动应用的开发工具,尤其针对iOS和Android平台。这个版本的Apidoc是开发者的重要参考资料,它包含了完整的API文档,帮助开发者理解并使用Titanium框架的各种功能。...
TiInspector, 通过 Chrome DevTools调试 Titanium Mobile 应用程序 #Ti 检查器Ti检查器允许在 Chrome DevTools web界面中调试 Appcelerator Titanium 应用程序。工具通过将命令和消息转换为 Chrome 调试协议和 ...
Titanium Mobile API 1.8.2.chm 内容很好但是英文版的,E不好的童鞋慎下
Titanium Mobile API是用于开发跨平台移动应用的框架,它基于JavaScript,允许开发者用一种语言创建iOS和Android应用。这个框架提供了丰富的API,使得开发者能够访问设备的各种功能,如GPS、摄像头、网络通信等。本...
TiJSPDF, Titanium Mobile 应用程序的JSPDF插件 TiJSPDFTiJSPDF是用于使用JSPDF库生成pdf并在 Titanium Mobile 应用程序中操作它们的Titanium Mobile 应用程序的一种 JSPDF插件插件。这个插件独立于 Titanium 维护,...
TitanTricks, Titanium Mobile的代码示例和组件 TitanTricks自述文件TitanTricks是 Titanium Mobile 项目,充满了可以重用的代码示例和技巧,面向begginers和中级级别用户。android和iOS兼容,但有些示例仅适用于 ...
Android-titanium_mobile.zip,带有javascript的本地ios、android和windows应用程序,安卓系统是谷歌在2008年设计和制造的。操作系统主要写在爪哇,C和C 的核心组件。它是在linux内核之上构建的,具有安全性优势。
ti.mely, Titanium Mobile的Ti.mely 本机定时器 Ti.melyTi.mely 项目提供对Android和iOS计时器的访问。在开始之前* 是在使用这个模块之前,设计用于 Titanium SDK 3.1.1. GA *的iOS和Android本机模块。 如果你需要...
[Packt Publishing] Creating Mobile Apps with Appcelerator Titanium (E-Book) ☆ 图书概要:☆ Develop fully-featured mobile applications using a hands-on approach, and get inspired to develop more ...
Building Mobile Applications with Titanium, 这是mobi版,适合knidle等电子书阅读。 详细介绍了titanium框架的使用
sublimetext-tita, Tita Titanium Mobile/Alloy sublime text 2插件 这个插件不再主动地维护 ***因为我不再使用 st2/st3 。 有人对 fork 感兴趣并维护它?替代插件:...
适用于 Tizen 的 Titanium Mobile 欢迎来到 Appcelerator Titanium Mobile 开源项目。 Titanium 为 Web 开发人员提供了一个使用 JavaScript 构建跨平台原生移动应用程序的平台。 有关 Titanium 的更多信息,请访问 ...
Titanium Appcelerator API v3.1.3.GA 的环境声明。 var ROWS: number = 10; var children: Array<Titanium> = button.getChildren(); var window: Titanium.UI.Window = Titanium.UI.createWindow({ title: '...
要安装到 haxelib,请运行haxelib git titanium_mobile_externs https://github.com/momer/haxe_titanium_mobile.git <version> haxelib 截至本次更新,最新为 3.5.0-rc1。 使用 externs 很简单,下面是test/Test...
贾米钛 这将JavaScript BDD框架带到了Titamium Mobile。 入门 制作目录并获取Jasmine Titanium cd Resources mkdir spec lib vendor cd vendor git clone ... Titanium Mobile 1.7.2或更高
napp.alloy.adapter.restapi, 用于 Titanium 合金框架的RestAPI同步适配器 napp.alloy. adapter.restapi用于 Titanium 合金框架的RestAPI同步适配器。响应代码适配器的设计具有以下结构。200: 请求成功。201: 已经...
### 关于Titanium Mobile开发跨平台iOS和Android应用 #### 我们的主角-Titanium Mobile Titanium Mobile是一种跨平台的移动应用开发框架,它允许开发者使用JavaScript、HTML和CSS来构建高性能的原生应用程序。该...