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