iPhone - извлечение и извлечение значения из словаря в CGlayer

У меня есть представление рисования пальцем, которое я выполняю отмену / повтор. Все рисование происходит на CGLayer с именем lineLayer.

Как только пользователь касается экрана, но до того, как к нему будут внесены какие-либо изменения, мне нужно быстро захватить содержимое просмотров и создать уровень отмены.

Очевидно, что сохранение вида на диск не вариант, потому что это занимает слишком много времени. Решение, которое я представил, состоит в том, чтобы скопировать CGLayer в словарь, используя что-то вроде этого:

// I copy the layer as a NSValue
NSValue *layerCopy = [NSValue valueWithBytes:&myLayer objCType:@encode(CGLayerRef)];

Я храню это в словаре

NSString *aKey = [NSString stringWithFormat:@"%d", [number intValue]];
[self.dictUNDO setObject:layerCopy forKey:aKey];

позже я получаю его с помощью

NSString *myKey = [NSString stringWithFormat:@"%d", [number intValue]];
NSValue *myCopy = [self.dictUNDO objectForKey:myKey]; 
[myCopy getValue:&lineLayer];
//lineLayer is the CGLayer where the drawing happens

проблема в том, что lineLayer вообще не изменяется этой операцией чтения. Он продолжает иметь то же содержание, что и раньше.

Я что-то пропустил?

Благодарю.

2 ответа

Решение

Рассматривали ли вы основные данные для управления вашими объектами? Я спрашиваю, потому что отмена / повтор приходит бесплатно с этим?

Вы пытались сделать глубокую копию, например, создать растровый контекст из слоя?

Другие вопросы по тегам