class Person implements Cloneable {
int age;
Person(int age) {
this.age = age;
}
@Override
public Object clone() {
try {
return super.clone();
} catch (CloneNotSupportedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
public static void main(String[] args) {
Person p = new Person(0);
Person p1 = (Person) p.clone();
p.age = 10;
System.out.println(p.age + " " + p1.age);
}
результат 10 0 В Java, мы можем просто использовать super.clone() для реализации клона. но как я могу сделать то же самое в быстром? Должен ли я написать что-то подобное, чтобы реализовать клон в swift?Как клонировать объект, как Java в быстрой
class Person: NSObject, NSCopying {
var age: Int?
func copyWithZone(zone: NSZone) -> AnyObject {
var p = Person()
p.age = self.age
return p
}
}
Кажется, что с одним классом, одним членом. но если у меня много дочернего класса, и у каждого дочернего класса есть разные члены, это будет много кода, я должен реализовать клон для каждого дочернего класса.
В java, только один метод clone в суперклассе, это намного проще.
http://stackoverflow.com/questions/24754559/how-to-do-deep-copy-in-swift – aadarshsg
спасибо, я видел это, это не тот ответ, который я хочу. @aadarshs –
Я предполагаю, что ответ заключается в том, что Swift не хватает этого комфорта. Не знаю, приносит ли Swift2 какие-либо улучшения здесь. –