0
boolRef = (CFBooleanRef)CFDictionaryGetValue(descriptionDictionary, kDADiskDescriptionMediaRemovableKey);
if (boolRef) {
CFRelease(boolRef); // do i need this code?
}
boolRef = (CFBooleanRef)CFDictionaryGetValue(descriptionDictionary, kDADiskDescriptionMediaRemovableKey);
if (boolRef) {
CFRelease(boolRef); // do i need this code?
}
首先閱讀Memory Management Programming Guide for Core Foundation。答案是否定的,因爲創建規則。 CFDictionaryGetValue()
不包含單詞「創建」或「複製」。
請注意,在這種情況下CFRelease()
不只是不必要的,它是不正確的,並會導致過度釋放崩潰。
有少數情況下釋放*是*可選。在幾乎所有情況下,無論你需要做還是需要*不*做*。 – Chuck 2010-11-15 18:45:39
謝謝。我在提問之前已經閱讀過這篇文章,但在我使用的例子中,他們被釋放了,所以我不確定。 – ABBAPOH 2010-11-15 18:51:29