1.QTSSDictionary如何存储多个属性

属性信息存放在DictValueElement结构体中,QTSSDictionary初始化包含QTSS_MAX_ATTRIBUTE_NUMS个结构体(DictValueElement)数组。

darwin之qtss属性详解

2.如何去描述一个属性信息(属性类型,名称,权限,回调)呢?

用QTSSDictionaryMap去描述,每一个QTSSDictionary都要有一个与之对应的QTSSDictionaryMap,在其内部维护了QTSSAttrInfoDict数组,每一个元素负责描述一个属性,与QTSSDictionary一一对应。


darwin之qtss属性详解

3.QTSSDictionary如何与QTSSDictionaryMap想关联?

QTSSDictionary,有一个QTSSDictionaryMap的指针,通过此方式来实现关联。 

darwin之qtss属性详解


4.属性信息存放位置?

所有的属性及属性的描述信息都是存放在内存中的,通过对象的成员数组体现。


5.如何设置QTSS_Object属性信息?

QTSSDictionary 与QTSS_Object对应,凡是派生于QTSSDictionary的对象,就被称作QTSSDictionary。

比如:RTSPRequest: QTSSDictionary->RTSPRequestInterface->RTSPRequest.

RTSPRequest被称作为:QTSS_RTSPRequestObject

如何设置QTSS_RTSPRequestObject的属性呢?

所有 QTSS_Object的内置属性都存放在QTSS.h文件中。比如QTSS_RTSPRequestObject的内置属性如下:

它有43个内置属性,每一个属性的id如下图所示。

darwin之qtss属性详解

那么每个属性对应的属性信息在哪里维护呢 ? 在QTSSDictionaryMap中维护,它的初始化在RTSPRequestInterface原文件中,属性信息以sAttributes数组形式设置好,并在静态函数Initialize中初始化。

darwin之qtss属性详解

既然属性对应的信息已经初始化好,那么属性的key-value如何设置呢?

构造函数中,可以发现,QTSSDictionary中维护的value都是指针,指向类的成员变量,如此只要修改成员变量值,对应的key的value值也会改变。


darwin之qtss属性详解

对于value指向fMethod变量,它在什么地方更新值,又如何获取它的值呢?

darwin之qtss属性详解



相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-08-14
  • 2022-01-02
  • 2021-08-17
  • 2021-07-16
  • 2021-12-21
猜你喜欢
  • 2021-06-02
  • 2022-12-23
  • 2021-10-12
  • 2021-11-05
  • 2022-01-27
  • 2022-12-23
相关资源
相似解决方案