encode and decode UnsafePointer
diff --git a/Foundation/NSAffineTransform.swift b/Foundation/NSAffineTransform.swift
index 77d85da..20cef42 100644
--- a/Foundation/NSAffineTransform.swift
+++ b/Foundation/NSAffineTransform.swift
@@ -286,12 +286,16 @@
preconditionFailure("Unkeyed coding is unsupported.")
}
- aCoder.encode(Double(self.transformStruct.m11), forKey: "NS._m11")
- aCoder.encode(Double(self.transformStruct.m12), forKey: "NS._m12")
- aCoder.encode(Double(self.transformStruct.m21), forKey: "NS._m21")
- aCoder.encode(Double(self.transformStruct.m22), forKey: "NS._m22")
- aCoder.encode(Double(self.transformStruct.tX), forKey: "NS._tX")
- aCoder.encode(Double(self.transformStruct.tY), forKey: "NS._tY")
+ let pointer = UnsafePointer<Float>([
+ Float(transformStruct.m11),
+ Float(transformStruct.m12),
+ Float(transformStruct.m21),
+ Float(transformStruct.m22),
+ Float(transformStruct.tX),
+ Float(transformStruct.tY),
+ ])
+
+ aCoder.encodeArray(ofObjCType: "[f]", count: 6, at: pointer)
}
open func copy(with zone: NSZone? = nil) -> Any {
@@ -308,12 +312,19 @@
preconditionFailure("Unkeyed coding is unsupported.")
}
- let m11 = aDecoder.decodeDouble(forKey: "NS._m11")
- let m12 = aDecoder.decodeDouble(forKey: "NS._m12")
- let m21 = aDecoder.decodeDouble(forKey: "NS._m21")
- let m22 = aDecoder.decodeDouble(forKey: "NS._m22")
- let tX = aDecoder.decodeDouble(forKey: "NS._tX")
- let tY = aDecoder.decodeDouble(forKey: "NS._tY")
+ let pointer = UnsafeMutablePointer<Float>.allocate(capacity: 6)
+ defer {
+ pointer.deinitialize()
+ pointer.deallocate(capacity: 6)
+ }
+ aDecoder.decodeArray(ofObjCType: "[f]", count: 6, at: pointer)
+
+ let m11 = pointer[0]
+ let m12 = pointer[1]
+ let m21 = pointer[2]
+ let m22 = pointer[3]
+ let tX = pointer[4]
+ let tY = pointer[5]
self.transformStruct = AffineTransform(m11: CGFloat(m11), m12: CGFloat(m12),
m21: CGFloat(m21), m22: CGFloat(m22),