Symbian开发入门
2010-06-03 23:07:00 来源:WEB开发网到目前为止,我们已经讨论了关于描述符的基本知识,包括如何实例化每一种具体的描述符,如何访问和修改描述符的数据,以及如何置换描述符的内容。现在我们来关注一下操作数据的方法和在使用描述符时一些常见的问题。
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的宽度,这样可以既写入字符串,也可以写入二进制数据。被用来写入到文件中的参数是对一个不可修改的描述符的引用,而在读文件的时候,使用了可修改的描述符的引用。可修改描述符的最大长度决定了可以从文件中读入多少数据,所以不需要再给文件服务器传递一个表示长度的参数。文件服务器将会填充满描述符。当文件中的数据不够描述符的最大长度时,文件服务器会把所有可得的数据写入描述符。调用函数后,描述符的长度反映了写入数据的长度。这样,调用者也无需再另外传递一个参数用来表示返回的数据长度。
- ››开发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的批处理代码
更多精彩
赞助商链接