Когда вы создаете CGLayer вроде этого, а затем получаете контекст ... кажется невозможным выпустить CGContextRef ?
Выпуск CGLayerRefсамо по себе (очевидно) работает нормально.
Вы могли бы подумать, что можете выпустить CGContextRef непосредственно перед выпуском CGLayer - но нет?Также вы не можете выпустить CGContextRef сразу после выпуска CGLayer.
Если вы отпустите CGContextRef, приложение вылетит.
CGLayerRef aether = CGLayerCreateWithContext(
UIGraphicsGetCurrentContext(), CGSizeMake(1024,768), NULL);
CGContextRef weird = CGLayerGetContext(aether);
// paths, strokes, filling etc
// paths, strokes, filling etc
// try releasing weird here
CGLayerRelease(aether);
// or, try releasing weird here
Кто-нибудь знает, что здесь происходит?(Обратите внимание, что CGContextRelease действительно точно такой же, как CFRelease, с некоторой проверкой nil.)
На самом деле, не следует ли вам никогда вручную выпускать CGContextRef?Кто-нибудь знает?Приветствия.
CGContextRelease(weird); // impossible, not necessary, doesn't work???
Относительно впечатляющего ответа Джоэла ниже:
Является ли выпуск CGLayerRef правильным и правильным?Джоэл указал:
"Да, поскольку функция, из которой вы ее получаете, имеет подпись" Создать ". См. Документация / CoreFoundation /"