2
後,我有這段代碼:意外保留計數調用CFMakeCollectable
CFDictionaryRef lDictionary = AACreateDictionaryForFile(path);
if (lDictionary) {
printf("retct before: %ld\n", CFGetRetainCount(lDictionary));
CFMakeCollectable(lDictionary);
printf("retct after: %ld\n", CFGetRetainCount(lDictionary));
return TRUE;
} else {
return FALSE;
}
出人意料的是,代碼運行控制檯後顯示以下的輸出:
retct前:1
後 retct :2147483647
我本來期望:
retct前:1
後退:0
我做錯了什麼?我有不正確的期望嗎?
從某種意義上說,你做錯了事情,雖然你在做這件事時並不罕見。不要檢查保留計數。對他們沒有期望。永遠不要根據他們做出決定。它們是實現細節,而不是有用的信息。 – walkytalky 2010-08-06 09:03:37
感謝您驗證我(幾乎)知道我在做什麼。我知道保留數並不是很可靠,但我並不十分期待這些結果。無論如何,我只是想確保沒有更明顯的我失蹤的事情。 – Onio 2010-08-06 14:44:16