我面临在swift 3中克隆对象的问题。我想复制/克隆一个对象,然后想要修改它的值,以便修改不反映实际对象。这就是我所做的。
let patientInformation = PatientInformationController.shared().pateintInformation.copy() as! PateintInformation
patientInformation.firstName = "Some Name"
上述行实际上不仅修改了本地副本,还影响了实际的PatientInformationController.shared()。pateintInformation.firstName PateintInformation符合NSCopying协议。
我检查了两个对象(实际和副本)的内存地址,它们是不同的。
在PatientInformation课程中:
required public init(instance: PateintInformation) {
self.firstName = instance.firstName
}
public func copy(with zone: NSZone? = nil) -> Any {
return PateintInformation(instance: self)
}