iOS 8.3 – 金属,find零,同时展开一个可选值

在苹果发布iOS 8.3之前,我的代码工作,但是因为更新XCode抱怨find一个零值,即使我的值都没有零(我在debugging时validation了这一点)。

为了理智,我重新写了我的程序来渲染一个简单的三angular形与金属屏幕,但同样的错误抛出。 我有一个3顶点的数组,然后乘以数组的大小,以获得缓冲区的大小,并通过OptionCPUCacheModeDefault传递一个nil参数可能是导致我的问题。

 // Test array of vertices let ASVertices:[Float] = [ 0.0, 1.0, 0.0, -1.0, -1.0, 0.0, 1.0, -1.0, 0.0 ] // Other Metal init code... // Set the buffers let dataSize = ASVertices.count * sizeofValue(ASVertices[0]) vertexBuffer = ASDevice.newBufferWithBytes(ASVertices, length: dataSize, options: MTLResourceOptions.OptionCPUCacheModeDefault) 

当我debugging,我可以看到dataSize是36(9 * 4)预期,所以我相当难dataSize ,为什么我fatal error when unwrapping an optional value时,得到一个fatal error when unwrapping an optional value 。 我知道错误是不言自明的,但上面打印的代码是堆栈跟踪显示引发exception的地方,但我没有看到零值。 什么可能导致这个?

当连接到Xcode的时候,Metal没有真正用于iOS 8.3。 目前,禁用GPU帧捕获,并提交雷达。