Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将CGPoint与TableBuffer一致以使用vDSP_Ios_Swift_Accelerate - Fatal编程技术网

Ios 将CGPoint与TableBuffer一致以使用vDSP

Ios 将CGPoint与TableBuffer一致以使用vDSP,ios,swift,accelerate,Ios,Swift,Accelerate,我想对一个数组中存储的相当多的CGPoint实例执行一些数学运算,所以我想研究一下如何使用Accelerate,首先将CGPoint与AccelerateMutableBuffer一致,然后扩展数组使之一致 经过一些尝试和错误,我得出了以下结论,编译时没有任何错误,但是vDSP.add(:,:,result:)返回的结果不正确:变量p最后仍然是.zero 我错过了什么 非常感谢 (你可以在操场上尝试下面的代码) 导入基础 导入核心图形 进口加速 扩展CGPoint:AcceleratemTabl

我想对一个数组中存储的相当多的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 编辑:我已经弄明白了。据我所知,这是正确的解决办法。它编译时没有错误,运行时没有问题,并给出正确的结果。所以,除非有人看到我没有看到的问题,否则我很乐意考虑解决这个问题

以前的实现的问题是,在创建
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)✅