我不熟悉C.我有其他人創建了一種方法,有一個是這樣的iphone - 釋放一個CFDictionary
touchBeginPoints = CFDictionaryCreateMutable(NULL, 0, NULL, NULL);
point = (CGPoint *)malloc(sizeof(CGPoint));
CFDictionarySetValue(touchBeginPoints, touch, point);
我想dealloc的字典現在創建了一個CFDicionary。據我所知,我必須逐字逐一閱讀字典中有多少個條目,並且每個條目都是免費的。
像
free((void *)CFDictionaryGetValue(touchBeginPoints, ...));
CFDictionaryRemoveValue(touchBeginPoints, ...);
所以,我怎麼遍歷通過這個CFDictionary釋放儲存在那裏的每個點,並刪除每個字典詞條?
感謝您的任何幫助。
我明白你是對的。我試圖實現你所說的,我從編譯器收到錯誤。例如,在我看到的免費(價值)行上(「警告:將'free'的參數1從指針目標類型中丟棄限定符」)。那麼,您能否告訴我如何添加和刪除此字典中的對象,以及如何在實施您的方法後發佈字典?請爲我的案件專門編碼,因爲我沒有辦法在C中推斷僞代碼並適用於我的案例......我完全不在C中。 – SpaceDog 2010-08-04 06:18:01
要消除警告,只需將free(value)更改爲free((void *)value)即可。 一旦你使用這個valueCallback,你可以使用CFRelease(touchBeginPoints)來釋放字典,就像@rastersze建議的那樣。 您不需要遍歷字典的內容。從字典中刪除一個對象現在將釋放它。請注意,對於其他應用程序來說,這是否是件好事是不可能的。猜測,你在這裏複製Erica Sadun,這對嘗試一個noob不是一件好事。 – Jeff 2010-08-05 01:08:24
我知道,但埃裏卡的例子只是坐在那裏做一個我想做的事,而且我永遠不需要修改。她在C和C中做了很多事情,並且C融化了我的大腦。我總是試圖將所有東西從C/C++轉換爲Objective-C,但首先我必須瞭解所做的事情。過去我成功地完成了這個任務,但是這本字典的東西讓我很難過。謝謝! – SpaceDog 2010-08-05 09:39:57