Допустим, у меня есть этот фрагмент кода:
CGColorSpaceRef colorSpaceRGB = CGColorSpaceCreateDeviceRGB();
CGContextSetStrokeColorSpace(context, colorSpaceRGB);
CGContextSetFillColorSpace(context, colorSpaceRGB);
После этого я немного рисую. Когда я закончу, мне нужно вручную отпустить colorSpaceRGB, если я использую ARC? Нравится:
CGColorSpaceRelease(colorSpaceRGB);
Или мне ничего не нужно делать?
Спасибо :)
Ответ 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. Документация.