iPhone - извлечение и перенос значения из словаря в CGlayer - PullRequest
1 голос
/ 02 июня 2011

У меня есть представление рисования пальцем, которое я использую для отмены / повтора.Все рисование происходит на 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 ]

0 голосов
/ 02 июня 2011

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

0 голосов
/ 02 июня 2011

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

...