我有这段代码:
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;
}
令人惊讶的是,在运行代码后,控制台显示以下输出:
之前:1 之后:2147483647
我原以为:
之前:1 之后:0
我做错了吗?我有不正确的期望吗?
答案 0 :(得分:1)
2147483647是(2 ^ 31)-1:这是32位有符号整数的最大值。
垃圾收集器肯定使用此值作为一种标志。所以不用担心,你的代码还可以。