symbian 开发诀窍大放送
2010-02-23 16:06:00 来源:WEB开发网2. 要对外来系统事件做出响应。请牢记,您的应用程序是在一个多任务电话系统上运行,您需要将注意力集中于刚获得的/丢失的事件上,以确保当用户获得一个高优先级的通知时您能够做出正确响应。例如,正打进来的电话会干扰您的应用程序的运行,这时应确保您已保存了系统状态和数据(即:您需要对标准的“背景”事件采取适当的行动——请参阅SDK)。一般说来,系统框架会处理这个问题,您不需要采取任何特殊行动——但一定要确保您没有妨碍系统框架的正常操作。
3. 内存处理是Symbian OS 需要考虑的一个重要课题。在这一点上,应注意电话有时会不同于模拟器。因此在将您的应用程序呈交给“Symbian 认证签名”进行测试之前,务必确保已在实际电话设备上测试了您的程序。
4. 内存堆栈空间有限!应尽可能将对象放到内存堆中,而不要放到栈里。KERN-EXEC 3 异常(panic)发生的主要原因之一就是栈的破坏/溢出。
5. 应用程序发生异常(panic) 表明您的代码中一定有错误。以下是一些主要、常见的错误:
• 忘记将非对象成员、被分配到堆的变量加到CleanupStack 上。
• 将成员变量放到CleanupStack 上——这一点要千万避免;在析构函数中将这些变量删除就可以了。
• ‘重复删除’——例如,没有正确的从CleanupStack上Pop()出已经被销毁的对象,造成CleanupStack以后试图再次删除它。或者使用过一个对象之后将其删除但忘记将其值设成NULL,从而在析构函数又试图删除一次。
• 用可能不存在于您的析构函数中的变量调用函数。
例如,以下代码可能导致异常,因为有可能您在分配内存之前您的对象已经被销毁,或者在应用程序的另一处已经删除了该内存,这样iSomeServer 就会处于NULL:
CMyClass::~CMyClass()
{
iSomeServer->Close();
delete iSomeServer;
}
应该如下编写代码:
CMyClass::~CMyClass()
{
if (iSomeServer)
{
iSomeServer->Close();
delete iSomeServer;
}
}
• 在NULL 指针上调用函数。
• 函数调用另一个函数,而其使用的变量已经超出范畴,
- ››开发Android 日历教程
- ››开发学院总结 Win 8实用技巧大全
- ››开发学院原创教程:把win8的IE10放桌面上方法(非...
- ››开发者眼中的Windows Phone和Android
- ››Symbian S60 SocketConnection参数
- ››开发学院教你用SQL 语句最快速清空MySQL 数据表的...
- ››Symbian乏力:2010年诺基亚悲情大事记
- ››Symbian三大升级开启2011年新战略
- ››Symbian/Android/iOS/WM安装包对比
- ››Symbian一个活动对象的测试例子
- ››Symbian ListBox控件
- ››Symbian下自动切换SDK的批处理代码
更多精彩
赞助商链接