我有一个类AudioManager
,其成员类型为AudioBufferList *
。 (这是一个在CoreAudio
框架中声明的结构体)。由于AudioBufferList
不是NSObject
,我不能保留它,所以我必须分配/释放它(纠正我,如果我错了)。在Objective-C对象中使用malloc/free
我的问题是,哪里是'正确的'地方释放它?目前我在dealloc
的方法AudioManager
。如果我理解正确,一旦将release
消息发送到AudioManager
的实例,就会自动调用此方法---这是真的吗?是否还有其他推荐的练习关于在Objective-C对象的非对象成员上使用alloc/free?
编辑:
从苹果文档:
子类必须实现自己的 版本的dealloc的允许 释放被消耗任何额外的内存 的对象,如 动态分配的存储对于数据 或对象实例变量拥有 解除分配的对象。 执行类特定的 释放后,子类方法 应该通过一个消息包含超类的dealloc版本的 超:
这使得事情一点点清晰的 - 但更多的见解表示赞赏。
但是非对象类型(如`AudioBufferList`)仍然可能需要'c-style'malloc/free,否?我的意思是,有时你需要动态分配内存。 (并感谢您评论的第二部分)。 – 2011-01-10 19:07:17
除非AudioBufferList有一些不明确的地方,否则不会。例如,看看苹果的方法,CGRectMake,我将在编辑中发布我的答案。 – GendoIkari 2011-01-10 19:08:46