Ios 将CGPoint与TableBuffer一致以使用vDSP
我想对一个数组中存储的相当多的CGPoint实例执行一些数学运算,所以我想研究一下如何使用Accelerate,首先将CGPoint与AccelerateMutableBuffer一致,然后扩展数组使之一致 经过一些尝试和错误,我得出了以下结论,编译时没有任何错误,但是vDSP.add(:,:,result:)返回的结果不正确:变量p最后仍然是.zero 我错过了什么 非常感谢 (你可以在操场上尝试下面的代码) <代码>导入基础 导入核心图形 进口加速 扩展CGPoint:AcceleratemTableBuffer{ 公共类型别名元素=双精度 公共变量计数:Int{2} 带unsafebufferpointer的公共func( _正文:(UnsafeBufferPointer)抛出->R )后退->后退{ var varself=self 设ubp=withUnsafeBytes(of:&varself){urbp-in urbp.bindMemory(to:Element.self) } 返回正文(ubp) } 具有UnsafemutableBufferPointer的公共变异函数( _正文:(inout unsafemtablebufferpointer)抛出->R )后退->后退{ var varself=self var umbp=withunsafemtablebytes(of:&varself){umrbp in umrbp.bindMemory(to:Element.self) } 返回try正文(&umbp) } } 设p1=CGPoint(x:1.5,y:3.5) 设p2=CGPoint(x:0.5,y:2.5) 变量p:CGPoint=.0 vDSP.add(p1、p2、结果:&p) P 编辑:我已经弄明白了。据我所知,这是正确的解决办法。它编译时没有错误,运行时没有问题,并给出正确的结果。所以,除非有人看到我没有看到的问题,否则我很乐意考虑解决这个问题 以前的实现的问题是,在创建Ios 将CGPoint与TableBuffer一致以使用vDSP,ios,swift,accelerate,Ios,Swift,Accelerate,我想对一个数组中存储的相当多的CGPoint实例执行一些数学运算,所以我想研究一下如何使用Accelerate,首先将CGPoint与AccelerateMutableBuffer一致,然后扩展数组使之一致 经过一些尝试和错误,我得出了以下结论,编译时没有任何错误,但是vDSP.add(:,:,result:)返回的结果不正确:变量p最后仍然是.zero 我错过了什么 非常感谢 (你可以在操场上尝试下面的代码) 导入基础 导入核心图形 进口加速 扩展CGPoint:AcceleratemTabl
self
(var varself=self
)的本地可变副本并在此基础上操作时,self
本身不会被更改
<代码>导入基础
导入核心图形
进口加速
扩展CGPoint:AcceleratemTableBuffer{
公共类型别名元素=双精度
公共变量计数:Int{2}
带有UnsafeBufferPointer(uuBody:(UnsafeBufferPointer)的公共函数抛出->R)再抛出->R{
尝试Swift.withUnsafeBytes(of:self){urbp in
try body(urbp.bindMemory(to:Double.self))
}
}
具有UnsafemutableBufferPointer的公共变异函数(
_正文:(inout unsafemtablebufferpointer)抛出->R
)后退->后退{
尝试使用Swift.withunsafemtablebytes(of:&self){umrbp in
var umbp=umrbp.bindMemory(to:Double.self)
返回try正文(&umbp)
}
}
}
设p1=CGPoint(x:1.5,y:3.5)
设p2=CGPoint(x:0.5,y:2.5)
变量p:CGPoint=.0
vDSP.add(p1、p2、结果:&p)
p/(x:2,y:6)✅