访问CoreFoundation容器的高效快捷方式
Efficient and Quickway to access CoreFoundation Containers
我正在尝试使用CoreFoundataion容器。在访问属性列表时,这似乎是一种非常方便的方式。然而,我注意到,如果容器是嵌套的,那么访问内部容器真的很尴尬(例如,CFArrayRef包含一个CFDictionaryRef,然后它有一个值为另一个CFArrayRef的键。也许下面的图表显示得更好)。
CFArrayRef a
|----CFDictionaryRef b (assume it's at index 2 of a)
|----CFArrayRef c (assume, they key value is "array")
假设我们有一个CFArrayRef我想访问CFArrayRef c 中CFIndex 0的元素
我必须键入这样的内容:
CFArrayGetValueAtIndex((CFArrayRef)CFDictionaryGetValue((CFDictionaryRef)CFArrayGetValueAtIndex(a, 2), CFSTR("array")), 0)
在我看来,这是大量的打字。我的猜测是,CoreFoundation是基于C而不是C++的,所以它不提供像"[]"这样的运算符重载来访问它的元素。
有没有一种方法可以让这种访问在打字时更容易(也许也可以阅读?)
我正在使用C++,我正在考虑为某些CFTypeRef(如CFArrayRef、CFDictionaryRef、CFStringRef)重载运算符"[]",不确定这是否是个好主意。
如您所述,Core Foundation API是一个C API,因此没有[]运算符可重载。你基本上有3个选择:
- 在多行上编写C以解决可读性问题
- 如果您真的想使用C,请编写C++包装器++
- 如果你已经有了Objective-C,那么你在这里提到的所有类型都是"免费的"
我会说坚持1。
相关文章:
- 如何在c++中为模板函数实例创建快捷方式
- C++ ->运算符 [] 的快捷方式
- C++结构模板变量快捷方式定义不起作用
- 用于基于成员字段或函数创建比较器的快捷方式
- c++ Visual Studio 2015 快捷方式,用于从选择代码中生成功能
- 是否有用于"go to variable type definition" C++中"auto"变量的 Visual Studio 键盘快捷方式?
- Qt全局快捷方式扩展劫持快捷方式
- 在Qt Creator中应用代码更改的快捷方式是什么?
- 是否有快捷方式重叠运算符?
- 使用 C++ 显示 (.lnk) 快捷方式文件的真实路径
- 一个按钮有两个或多个快捷方式
- 通过TranslateAccelerator检测快捷方式时,忽略Shift键的状态
- 无论如何,是否可以确定MFC应用程序是通过PC重新启动或用户单击应用程序快捷方式开始的
- QDIR入口列表可以使用文件夹快捷方式透明地工作
- 快捷方式在C 中编写自定义编译命令时
- 如何以优雅高效的方式将无符号/有符号整数/长整型转换为 C 字符串?
- 自动热键:重新映射 MS Visio 的快捷方式,以将手动选择的对象对齐到顶部(好像按:"AlignTop")
- 如何为 QT Windows 应用程序设置不同的桌面快捷方式图标和任务栏图标不同
- 访问CoreFoundation容器的高效快捷方式
- Qt Creator中最有用(高效)的快捷方式