Извлечь счетчик сохранности для объекта CGImageRef? - PullRequest
0 голосов
/ 20 февраля 2009

Хотя вы можете освободить ссылку на объект CGImageRef с помощью «CGImageRelease», который, согласно SDK, «уменьшает счетчик сохранения растрового изображения», существует ли способ проверить текущий счетчик хранения для экземпляра CGImageRef ? [cgImageRef retainCount] недопустим, поскольку CGImageRef не является допустимым получателем сообщения retainCount.

Другими словами, во время dealloc внутри класса, который визуализирует EAGLContext, я хочу убедиться, что все выдающиеся ссылки на объекты CGImageRef освобождены, но, очевидно, я не хочу вызывать CGImageRelease (someCGImageRef), если его счетчик сохранения уже равен 0 На практике я обнаружил, что просто проверка на наличие ссылки на ноль не соответствует текущим значениям счетчика сохранения.

Лучше всего просто установить экземпляр CGImageRef равным nil после того, как вы закончили с ним, и вы уже выпустили его, чтобы проверка (someCGImageRef == nil) позволяла вам узнать, есть ли выдающаяся ссылка к этому?

Спасибо

1 Ответ

1 голос
/ 20 февраля 2009

Если я правильно прочитал документы, CGImageRelease похож на CFRelease, за исключением того, что он обрабатывает NULL по-разному. Это означает, что CFGetRetainCount должен работать, пока cgImageRef не равен NULL.

Хорошо, так что я прочитал остальную часть вашего вопроса после этого. Вы не должны вызывать CFGetRetainCount для объекта, который может уже иметь retainCount 0, поскольку к тому времени объект уже уничтожен. Вместо этого установите его в NULL.

(NULL и nil эквивалентны, но nil для объектов Objective-C. CGImageRef не является одним из них, поэтому вам, вероятно, следует использовать NULL, чтобы не запутаться позже.)

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