2

我有这段代码:

 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
retct 之后:0

难道我做错了什么?我有不正确的期望吗?

4

1 回答 1

1

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

垃圾收集器当然使用这个值作为一种标志。所以不用担心,你的代码没问题。

于 2010-08-06T08:55:19.043 回答