copiando um objeto personalizado

Eu tenho um objeto chamado Layer que possui alguns atributos e alguns métodos.

Eu preciso passar Layer para um segundo controlador de visualização:

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];

no SecondVC, eu posso mudar os atributos. Em seguida, retorno o objeto Layer por meio de um delegado;

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

    [self dismissModalViewControllerAnimated:YES];
}

agora meu problema é que estou passando um ponteiro para o objeto Camada do meu primeiro controlador de visualização e quando eu atualizo a Camada no segundo controlador de visão, o objeto Camada do meu primeiro controlador de exibição também está sendo atualizado.

por causa disso, não sei dizer se foi alterado (se tiver, preciso executar algum código).

Como posso criar uma cópia do meu objeto Layer e passar isso em vez de um ponteiro para o objeto Layer do meu primeiro controlador de exibição?

EDITAR:

Eu tentei usar um segundo método de inicialização:

-(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;
}

que não deu certo.

EDIT2:

tentou

Layer *copyLayer = [self.myLayer copy];

layerView.myLayer = copyLayer;

e recebi erro

-[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'

RESOLVIDO:

Eu adicionei uma cópia profunda ao método 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]];
}

isso me dá uma cópia do objeto Layer

questionAnswers(1)

yourAnswerToTheQuestion