Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Нужно ли выпускать CGColorSpaceRef под ARC?

Автор вопроса: xx77aBsОтветов: 3

Допустим, у меня есть этот фрагмент кода:

CGColorSpaceRef colorSpaceRGB = CGColorSpaceCreateDeviceRGB();

CGContextSetStrokeColorSpace(context, colorSpaceRGB);
CGContextSetFillColorSpace(context, colorSpaceRGB);

После этого я немного рисую. Когда я закончу, мне нужно вручную отпустить colorSpaceRGB, если я использую ARC? Нравится:

CGColorSpaceRelease(colorSpaceRGB);

Или мне ничего не нужно делать?

Спасибо :)

  • Этот ответ хорошо объясняет, почему и когда нужно освободить какой-либо объект. Пожалуйста, проверьте: stackoverflow.com/a/21967681/2849443 Pooja Shah 20.10.2015

ioscore-graphicsautomatic-ref-counting

Ответы

Ответ 1 · рейтинг 12 · user523234

да. Согласно документу Apple: поскольку функция CGColorSpaceRelease эквивалентна CFRelease, за исключением того, что она не вызывает ошибки, если параметр cs равен NULL. И если вы создаете, копируете или явно сохраняете объект Core Foundation, вы несете ответственность за его освобождение, когда он вам больше не нужен (см. Руководство по программированию управления памятью для Core Foundation).

Ответ 2 · рейтинг 7 · Marcy

Обновление для Swift 4.0:

Это больше не требуется в текущих версиях Swift.

CGColorSpaceRelease(colorSpace)

Эта строка кода теперь дает следующее сообщение:

"CGColorSpaceRelease" недоступен: объекты Core Foundation автоматически управляются памятью

Ответ 3 · рейтинг 3 · Robotic Cat

Да, я так думаю, даже под АРК.

Вам необходимо вызвать CGColorSpaceRelease в соответствии с документацией CGColorSpace. Документация.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы