iOS 8.3 - Metal,在展开可选值时找到nil

时间:2015-04-12 00:04:31

标签: ios metal

在Apple发布iOS 8.3之前,我的代码工作正常,但是由于更新XCode抱怨找到了nil值,即使我的值都不是nil(我在调试时验证了这一点)。

为了理智,我重新编写了我的程序,用Metal渲染一个简单的三角形到屏幕,但是抛出了同样的错误。我有一个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)

当我调试时,我可以看到dataSize正如预期的那样是36(9 * 4),所以我很清楚为什么我得到fatal error when unwrapping an optional value。我知道错误是自我解释的,但上面打印的代码是堆栈跟踪显示引发异常的地方,但我看到没有nil值。可能是什么导致了这个?

1 个答案:

答案 0 :(得分:0)

连接到Xcode时,Metal并不适用于iOS 8.3。现在,禁用GPU帧捕获,并提交雷达。