可以使用shared_ptr<BaseHandler>BaseHandler::FindObject(stringurl)来查找当前looper或其他looper中的组件
约定url各层次采用/分隔
此功能是通过BaseHandler里的string mObjectName来实现的
建议在类的构造函数中取有意义的名称,一般是取类名。
比如class MainLooper的mObjectName为"MainLooper";
class Board的mObjectName叫"Board";
class RtcHandler的mObjectName叫"RtcHandler";
假定如下场景
MainLooper.AddChild(board);
Board.AddChild(rtc)
则可以在任何looper环境下面用
auto obj = dynamic_pointer_cast<RtcHandler>(BaseLooper::GetMainLooper()->FindObject("Board/RtcHandler"));来获取RtcHandler对象。如果是在Board里面查义,则更简单,直接用autoobj= dynamic_pointer_cast<RtcHandler>FindObject("RtcHandler"));就可以了
本文介绍了一种基于shared_ptr和字符串匹配的组件查找机制。该机制允许在不同的looper环境中通过约定的URL层次结构来查找特定组件。举例说明了如何在一个looper环境中添加子组件,并从任意looper环境中通过路径字符串来定位到所需的子组件。
2124

被折叠的 条评论
为什么被折叠?



