如何dealloc id <mtlbuffer>金属iOS?</mtlbuffer>

时间:2015-04-07 12:46:28

标签: ios metal

我正在使用 id<MTLBuffer> vertexBuf = [device newBufferWithLength:count * sizeof(float) options:0];
 如何释放vertexBuf内存,它会大大增加内存。在apple的文档中没有提示释放MTLBuffers.And在我的情况下我不能再次重用它。我已尝试vertexBuf = nil;没有任何改进,因为我的项目启用了ARC,所以我无法使用[vertexBuf release]。有什么方法可以释放内存吗?

编辑:
我可以重用,但OpenGLES2 glDeleteBuffers中有一个选项,在许多情况下都很有用。所以我的搜索方式与金属相似。

2 个答案:

答案 0 :(得分:1)

找出谁正在使用vertexBuf。有人正在使用它,并坚持下去,或者如果你把它设置为零,记忆就会消失。

顺便说一句。发布不会对您有所帮助。 ARC确实为您保留/释放,除非它可能更加小心并且始终正确。如果你可以释放它并且内存消失了,当使用vertexBuf的人也发布它时你的应用程序会崩溃。

答案 1 :(得分:0)

试试这个:[vertexBuf setPurgeableState:MTLPurgeableStateEmpty];

这是Apple的文档:

  

如果state是MTLPurgeableStateEmpty,则资源被标记为可以丢弃的数据,因为调用者不再需要资源的内容。