У меня есть представление рисования пальцем, которое я использую для отмены / повтора.Все рисование происходит на 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 вообще не изменяется этой операцией чтения.Он по-прежнему имеет то же содержимое, что и раньше.
Я что-то упустил?
спасибо.