调用CFMakeCollectable后意外保留计数

时间:2010-08-06 08:11:59

标签: objective-c retain

我有这段代码:

 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

我做错了吗?我有不正确的期望吗?

1 个答案:

答案 0 :(得分:1)

2147483647是(2 ^ 31)-1:这是32位有符号整数的最大值。

垃圾收集器肯定使用此值作为一种标志。所以不用担心,你的代码还可以。