WEB开发网
开发学院手机开发Symbian 开发 Symbian开发入门 阅读

Symbian开发入门

 2010-06-03 23:07:00 来源:WEB开发网   
核心提示:中的存储位置,只要是在创建该字面量的生存期中使用这个临时的描述符,Symbian开发入门(16),这都是安全的,然而,描述符的长度反映了写入数据的长度,这样,创建临时变量要求设置指针、长度和描述符的类型,这对内联的构造方法来说是一个负担
中的存储位置。只要是在创建该字面量的生存期中使用这个临时的描述符,这都是安全的。然而,创建临时变量要求设置指针、长度和描述符的类型,这对内联的构造方法来说是一个负担,如果代码中有很多这样的字面量,也会使得二进制程序的体积增大。如果仅从存储方式上看,_S 宏和_L是相同的, 但有一点不同 ------它不产生临时的TPtrC描述符。如果您仅将它作为以0结尾的描述符使用,那么就使用_S宏。

到目前为止,我们已经讨论了关于描述符的基本知识,包括如何实例化每一种具体的描述符,如何访问和修改描述符的数据,以及如何置换描述符的内容。现在我们来关注一下操作数据的方法和在使用描述符时一些常见的问题。

3.8描述符作参数和返回类型

在编写代码的时候,您可能不想被限制于只能使用TBuf,原因是仅仅因为某个特定的库函数要求使用它。同样的道理,作为函数的提供者,您可能对调用者传递进来的参数类型不感兴趣。事实上,您不应该要求调用者传递特定类型的参数,因为您可能在后面要修改函数的实现,您可能要改变描述符的类型,如果您将这样的函数作为编程接口,最后您不得不让您的客户也改变他们的代码。这样的改动是非常不理想的,因为它破坏了代码的兼容性。

除非您来掌管描述符(负责描述符的创建和销毁工作),您甚至可以不用知道描述符是基于堆的还是基于栈的。事实上,只要标准类型的描述符(我们前面提到的5种描述符类型之一),就可以在它上面调用适当的方法,客户代码完全可以忽略描述符的内存布局和它在内存中的位置。基于以上的原因,当您定义函数的时候,应当尽量使用抽象的基类作为函数的参数和返回值。为了有效率,描述符参数应当使用引用传递的方式,要么是const TDesC&或者是TDes&。

例如,类RFile定义了read()和write()方法

IMPORT_C TInt Write(const TDesC8& aDes);

IMPORT_C TInt Read(TDes8& aDes) const;

在这两个方法中,输入的描述符被显式地声明为8bit的宽度,这样可以既写入字符串,也可以写入二进制数据。被用来写入到文件中的参数是对一个不可修改的描述符的引用,而在读文件的时候,使用了可修改的描述符的引用。可修改描述符的最大长度决定了可以从文件中读入多少数据,所以不需要再给文件服务器传递一个表示长度的参数。文件服务器将会填充满描述符。当文件中的数据不够描述符的最大长度时,文件服务器会把所有可得的数据写入描述符。调用函数后,描述符的长度反映了写入数据的长度。这样,调用者也无需再另外传递一个参数用来表示返回的数据长度。

上一页  11 12 13 14 15 16 17 18 19 20 21  下一页

Tags:Symbian 开发 入门

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