хранение объектов в контейнерах stl в среде сбора мусора - PullRequest
0 голосов
/ 05 октября 2011

У меня есть приложение Mac OS X, которое мне нужно для хранения объектов target-c в контейнерах stl (в виде указателей). Все работает нормально, пока я не скомпилирую программу с «поддержкой» сборки мусора из-за пользовательской среды, которую мне нужно использовать.

Проблема в том, что все объекты, которые хранятся в контейнерах stl, освобождаются. Есть ли способ сказать компилятору, чтобы он не собирал их, и я выпущу их, когда закончу с ними?

Возможно ли это? Есть ли способ получить фреймворк, который использует сборщик мусора, а основная программа - нет? Это также решило бы мою проблему. Я могу перекомпилировать фреймворк, но он сильно зависит от GC.

1 Ответ

1 голос
/ 05 октября 2011

Вы можете отключить сборку мусора для отдельных объектов, используя NSGarbageCollector disableCollectorForPointer: метод.Затем он будет зависать, пока вы не наберете -enableCollectorForPointer:.

Я считаю (но я не совсем уверен), что вы также можете использовать CFRetain / CFRelease на NSObject подклассах для более или менее того же эффекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...