2009-07-29 77 views

回答

6

首先,你可以把一個NSvalue放在CFMutableDictionary中,所以答案是「使用NSValue」。但我認爲你的問題的其餘部分是「沒有使用任何Cocoa對象」。在這種情況下,只需創建一個非保留的CFMutableDictionary,並且可以將所需的任何指針放入其中。有關示例代碼,請參閱"Defining Custom Collection Callbacks"。我使用了很多。

請記住,這些仍然是指針,所以你將不得不分配你的結構堆,而不是堆棧。這意味着內存管理現在是你的問題。當然,你可以創建一個自定義的回調函數來完成你想要的任何事情,所以如果你使用boost或者其他的自己的ref-counting系統,你仍然可以用CFMutableDictionary來實現它。

當然,你可以用一個小數據對象替換結構。這通常容易得多。但不同的問題需要不同的解

1

CFMutableDictionary

CFDictionaryAddValue 甲CFType對象或指針值添加到詞典中。

你只是傳遞一個指向你的結構的指針。

+0

哇,我絕對應該看起來更接近文件。我是否需要提供自定義回調,還是可以直接使用它? – 2009-07-30 00:03:56

+0

當指向結構體的指針交給默認的retain方法時,會崩潰,該方法需要CFType。你必須重載回調才能使其工作。 – 2009-07-30 00:05:41