我想使用CoreFoundataion容器。在訪問屬性列表時,它似乎是一個非常方便的方式。但是,我注意到,如果容器嵌套,訪問內部容器非常尷尬(例如,CFArrayRef包含一個CFDictionaryRef,CFDictionaryRef然後具有一個其值爲另一個CFArrayRef的鍵。也許下面的圖表會更好一些)。高效和快速訪問CoreFoundation容器
CFArrayRef a
|----CFDictionaryRef b (assume it's at index 2 of a)
|----CFArrayRef c (assume, they key value is "array")
所以我們可以說我們得到了一個CFArrayRef一個 我想在CFIndex 0訪問元素CFArrayRefÇ
我必須鍵入這樣的事情:
CFArrayGetValueAtIndex((CFArrayRef)CFDictionaryGetValue((CFDictionaryRef)CFArrayGetValueAtIndex(a, 2), CFSTR("array")), 0)
,看起來對我來說是很多打字。我的猜測是CoreFoundation基於C而不是C++,因此它不提供像「[]」那樣的運算符重載來訪問它的元素。
有沒有一種方法,使這項訪問更容易在打字(也許讀呢?)
我使用C++,我正在考慮超載運算符「[]」某些CFTypeRef(如CFArrayRef, CFDictionaryRef,CFStringRef),不知道這是不是一個好主意。
感謝您的回答。我正在積極地尋找它,並且最終得到你的答案。我嘗試了2,實際上它看起來很容易,但是後來我發現我需要編寫不同的字典創建者類和代理對象,以使其完全用C++現代化。我最終只能生活在任何C風格(選項1)中。 – 2012-07-15 05:38:22