如何解除锁定id<;MTLBuffer>;金属iOS?

如何解除锁定id<;MTLBuffer>;金属iOS?,ios,metal,Ios,Metal,我正在使用 id vertexBuf=[device newBufferWithLength:count*sizeof(float)选项:0] 如何释放vertexBuf内存,它会大幅增加内存。在苹果的文档中,没有任何关于解除锁定MTLBuffers的提示。在我的情况下,我不能再次使用它。我试过vertexBuf=nil没有改进,我不能使用[vertexBuf release],因为我的项目已启用ARC。有没有办法释放内存 编辑: 我可以重用,但OpenGLES2glDeleteBuffers中

我正在使用
id vertexBuf=[device newBufferWithLength:count*sizeof(float)选项:0]
如何释放vertexBuf内存,它会大幅增加内存。在苹果的文档中,没有任何关于解除锁定MTLBuffers的提示。在我的情况下,我不能再次使用它。我试过
vertexBuf=nil没有改进,我不能使用
[vertexBuf release]
,因为我的项目已启用ARC。有没有办法释放内存

编辑:

我可以重用,但OpenGLES2
glDeleteBuffers
中有一个选项,在许多情况下都很有用。因此,我正在搜索与金属相似的内容。

找出谁在使用vertexBuf。有人正在使用它,并坚持使用它,否则如果将其设置为零,内存将消失


顺便说一句,释放对你没有帮助。ARC确实为您保留/释放,但它可能会更加小心,并且总是正确的。如果你可以释放它并且内存消失,那么当使用vertexBuf的人也释放它时,你的应用程序就会崩溃

试试这个:
[vertexBuf setpurgablestate:mtlpurgeablestatempty]

这来自苹果的文档:

如果状态为mtlpurgeablestatempty,则资源将标记为可以丢弃的数据,因为调用方不再需要资源的内容


考虑一个你知道没有人持有VeltBuf的状态,在这种状态下我们需要去分解。那么如何解除锁定呢?为什么不能重用缓冲区呢?我可以重用,但在OpenGLES2 glDeleteBuffers中有一个选项,它在很多情况下都很有用。因此,我正在搜索类似于metal的内容。请尝试在Apple dev论坛中提问: