копирование пользовательского объекта

У меня есть объект с именем Layer, который имеет некоторые атрибуты и некоторые методы.

мне нужно передать слой на второй контроллер представления:

SecondVC *view = [self.storyboard instantiateViewControllerWithIdentifier:@"2VC"];
view.Layer = [[Layer alloc] initWithMapLayer:self.Layer];
view.delegate = self;

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:view];
navController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

[self presentModalViewController:navController animated:YES];

в SecondVC я могу изменить атрибуты. Затем я возвращаю объект Layer обратно через делегата;

-(void)done
{
    [self.delegate returnLayer:self.layer];

    [self dismissModalViewControllerAnimated:YES];
}

Теперь моя проблема заключается в том, что я передаю указатель на объект Layer моего первого контроллера представления, и когда я обновляю Layer во втором контроллере представления, объект Layer моего первого контроллера представления также обновляется.

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

как я могу создать копию моего объекта Layer и передать его вместо указателя на объект Layer моего первого контроллера представления?

РЕДАКТИРОВАТЬ:

я попробовал использовать второй метод инициализации:

-(id)initWithLayer:(Layer *)Layer
{
    if (self = [super init])
    {
        self.call = [[FunctionCall alloc] init];        
        self.HUD = [[MBProgressHUD alloc] init];

        self.Layers = [[NSMutableDictionary dictionaryWithDictionary:Layer.Layers] copy];
        self.nameList = [[NSArray arrayWithArray:Layer.nameList] copy];
    }
    return self;
}

который не сработал.

EDIT2:

пытался

Layer *copyLayer = [self.myLayer copy];

layerView.myLayer = copyLayer;

и получил ошибку

-[layer copyWithZone:]: unrecognized selector sent to instance 0xfc72c40
2012-06-12 11:15:28.584 Landscout[8866:1fb07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Layer copyWithZone:]: unrecognized selector sent to instance 0xfc72c40'

РЕШИТЬ:

я добавил глубокую копию в метод initWithLayer:

for (id key in layer.layers)
{
    [newLayers setValue:[[layer.layers objectForKey:key] mutableCopy] forKey:[key mutableCopy]];
}

for (id name in layer.nameList)
{
    [newList addObject:[name mutableCopy]];
}

это дает мне копию объекта Layer

Ответы на вопрос(1)

Ваш ответ на вопрос