Неожиданное сохранение количества после вызова CFMakeCollectable - PullRequest
2 голосов
/ 06 августа 2010

У меня есть этот бит кода:

 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 Ответ

1 голос
/ 06 августа 2010

2147483647 - (2 ^ 31) -1: это максимальное значение для 32-разрядного целого числа со знаком.

Сборщик мусора, безусловно, использует это значение как своего рода флаг. Так что не волнуйтесь, ваш код в порядке.

...