Я кэширую некоторые графические объекты на CGLayers и затем сохраняю их в объектах NSValue, используя @encode (чтобы хранить их в массиве).Я просто хотел убедиться, что я правильно обработал сохранение / освобождение ...
Я кэширую графику и сохраняю ее в массиве примерно так:
// Create an NSMutableArray "newCache"
CGLayerRef drawingLayer = CGLayerCreateWithContext(context, bounds.size, NULL);
CGContextRef drawingContext = CGLayerGetContext(drawingLayer);
// Do some drawing...
[newCache addObject:[NSValue valueWithBytes:&drawingLayer objCType:@encode(CGLayerRef)]];
CGLayerRelease(drawingLayer); // Is this release correct?
А потом позжеЯ получаю слой:
CGLayerRef retrievedLayer;
[(NSValue *)[cacheArray objectAtIndex:index] getValue:&retrievedLayer];
// Use the layer...
// Should I release retrievedLayer here?
Правильно ли я предполагаю, что слой должен быть освобожден после добавления в массив (последняя строка в первом фрагменте кода)?Я предположил, что это так, так как я вызвал функцию создания ранее в коде.Тогда NSValue отслеживает данные слоя для меня?Нужно ли возвращать retrievedLayer вручную после использования?
Спасибо