WEB开发网
开发学院手机开发Symbian 开发 Symbian 下菜单的应用开发技巧 阅读

Symbian 下菜单的应用开发技巧

 2010-03-13 20:25:00 来源:WEB开发网   
核心提示:这里XX是2位数字语言代码(在mmp文件中)---symbian系统对异常的处理要求很高,因为这个系统是专为小内存的应用模式所设计,Symbian 下菜单的应用开发技巧(5),因此在实际使用中很可能会产生系统资源分配不足,这就要求我们的程序设计遵守symbian的规则要求,我到现在对异常的大致模糊认识是(在还没有看一个
这里XX是2位数字语言代码(在mmp文件中)

-----------------------------------------------------------------------

symbian系统对异常的处理要求很高,因为这个系统是专为小内存的应用模式所设计,因此在实际使用中很可能会产生系统资源分配不足,这就要求我们的程序设计遵守symbian的规则要求。

所有能够引起异常退出的函数在函数名的最后都应当有一个字母L,异常退出通过“异常退出函数”经过调用栈向回传播,直到被异常捕获模块捕获。这个模块一般由控制台类应用程序的主函数E32Main()实现,或者作为应用程序框架的一部分提供给图形用户界面(GUI)程序。

注意,我们并不需要提供什么捕捉模块,一般来说,系统会在恰当的地方提供,我们只需要在可能引起异常的函数后面加上L后缀即可。

类的NewL()和NewLC()实现很有意思,如果该对象是由成员变量指向的,那么可以使用NewL()来生成,如果是由一个自定义变量指向的,那么就要使用NewLC()这里C后缀指明了将杂堆上创建一个类的新实例,并且将其压入清除栈,如果出现内存不足则异常退出。(一般来说,后缀“C”表示该函数在返回前将指向已创建对象的指针压入清除栈。)

我们上面说过了,一般不用自己的异常捕获,如果真要写的话,就要用TRAP和TRAPD宏,而正常情况下,我们是把异常传给激活调度器(Active Scheduler),但随之而来的有了新的问题,激活调度器是将调用的函数的自变量都删除的,但如果这个时候有个指向堆上分配的对象的指针,该怎么办那,如果贸然的将它删除,会造成内存的泄漏。于是,需要一些机制来保留这些指针,以便于它们所指向的内存在异常退出后可以得到释放。Symbian OS在清除栈中提供了解决这个问题的机制。

清除栈就是这样一种堆栈,它含有那些指向当异常发生时需要被释放的对象的指针。这句话很重要,我们也就理解了为什么那些自定义的指向分配的对象的指针要用到C类处理的道理。(注意: Symbian OS中C类对象总是在堆上进行分配,并且总是将CBase作为它们最基本的基类。)

而我们另个得知的由成员变量指向的对象指针不需要压入清除栈的原因是,在这些函数的析构函数中就已经有了删除对象的处理,如果这个时候要再压入清除栈,就会两次删除对象也就错了。

在symbian 的学习过程中,发现这个嵌入式的操作系统确实与我们普通编程大相径庭,它对异常的处理,对内存的谨慎处理都让人咋舌。我到现在对异常的大致模糊认识是(在还没有看一个完整源代码的基础上),首先对有可能出现异常退出的函数加上L后缀,这个时候留交给系统的异常捕捉去处理,或者你自己写出这个一个

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:Symbian 菜单 应用开发

编辑录入:coldstar [复制链接] [打 印]
赞助商链接