初学 symbian 一路走来
2010-03-05 06:06:00 来源:WEB开发网构建在ROM里
在命名这些类时,以T为前缀的说明这是一个简单类型的类,而以C为后缀的则说明此类定义了一个不可改变的描述符类型——也就是其内容是常量。
TDesC 提供了查询描述符长度(Length())以及取得其中数据(Ptr())的方法。在使用这些方法时,它同时还实现了所有常量字符串对象所需的标准操作,比如访问数据、比较和查询。派生类继承了所有这些方法,并且无论以何种方式继承,所有常量描述符的操作都是由TDesC来实现的。除了字面描述符外, Symbian OS所有其他的描述符类都继承自基类TDesC。
TDes 所有可变的描述符类都从基类TDes派生,而 TDes本身也是TDesC的子类。TDes存储了已分配给描述符的当前内存数据的最大长度。这个数值可由TDes的MaxLength()方法返回。同 TDesC的Length()方法一样,此方法不能被其派生类所重写。描述符内容的长度可以在此值的限定范围内增加或减小。
TDes定义了一组操作可变字符串数据的方法,包括那些对描述符进行扩充、填充以及格式化的操作。所有改变描述符的操作代码都由TDes来实现,并且可被其派生类继承。在Symbian Developer Library(这个书友谁可以给个连下载下,谢谢)里有对可变及不可变描述符的基类API方法进行全面描述的相关文档。
描述符基类TDesC和TDes实现了所有通用的描述符操作代码,但是它们不能被实例化。
指针型描述符:TPtrC和TPtr
觉得没什么好讲的,就是指针型,没能拥有真的内存空间,末尾是C的是常量指针,不能修改指向的内容,但是可以修改指针的指向,而TPtr是没有限制的,可以改变指向的内存地址的数据。
基于栈缓存的描述符TBufC和TBuf 在上面的表中已有说明,相当于数组
动态描述符:HBufC和RBuf
HBufC和RBuf描述符类可用于在编译期间大小不能确定的动态字符串数据(比如网络接收数据),以及那些对栈内存来说过于庞大的数据。这些类被用于在C中需要使用malloc来分配数据的地方。
HBufC
类HBufC8和HBufC16(其对应的中立类 HBufC被typedef定义为HBufC16)提供了一组静态的NewL()函数,以便在堆上创建描述符。这些方法在没有足够内存可用的情况下会异常退出。所有的堆缓存必须使用这些方法来建立,或者也可以使用TdesC类的Alloc()或AllocL()方法来建立,这两个方法都可以从已存在的描述符中建立出HBufC的一个副本。一旦描述符以其所需的大小建立后,当它又需要更多空间时就不会自动重新分配大小,额外的内存需要使用ReAlloc()
更多精彩
赞助商链接