¿Cómo cumplir con NSCopying e implementar copyWithZone en Swift 2?

Me gustaría implementar un simpleGKGameModel en Swift 2. El ejemplo de Apple se expresa en Objective-C e incluye esta declaración de método (como lo requiere el protocoloNSCopyinga partir del cualGKGameModel hereda):

- (id)copyWithZone:(NSZone *)zone {
    AAPLBoard *copy = [[[self class] allocWithZone:zone] init];
    [copy setGameModel:self];
    return copy;
}

¿Cómo se traduce esto en Swift 2? ¿Es apropiado lo siguiente en términos de eficiencia e ignorar la zona?

func copyWithZone(zone: NSZone) -> AnyObject {
    let copy = GameModel()
    // ... copy properties
    return copy
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta