Finch声音引擎内存泄漏

时间:2012-02-19 22:14:23

标签: xcode4 memory-leaks finch

我想要访问不同类别的一些声音,并且可以读取并更改多个类别中每个声音的音高值。然后我在我的应用程序委托方法中使用extern FISound *mySound并将它们加载到我的视图控制器中。它就像一个魅力,但问题是[FIDecoder decodeSampleAtPath:error]

总是存在内存泄漏
Leaked Object   #   Address Size    Responsible Library Responsible Frame
FISample,1  0x76e9030   32 Bytes    Musizs  -[FIDecoder decodeSampleAtPath:error:]
NSConcreteData,1    0x76e7100   32 Bytes    Foundation  +[NSData(NSData) allocWithZone:]
NSConcreteData,1    0x737b080   32 Bytes    Foundation  +[NSData(NSData) allocWithZone:]
FISample,1  0x76e81c0   32 Bytes    Musizs  -[FIDecoder decodeSampleAtPath:error:]

有人有这样的问题吗?谢谢。

2 个答案:

答案 0 :(得分:1)

即使在使用Instruments检查后,库代码看起来也不错。你能发一个展示漏洞的简短示例代码吗?另外,如何将手动release调用添加到源?该库使用ARC,因此手动内存管理调用应该是非法的。您是通过引用整个Xcode项目以正确的方式使用库,还是只导入“裸”源文件?

答案 1 :(得分:-1)

XCode 4使用Finch检测到许多可能的内存泄漏。这是因为 Finch没有根据内存管理指南正确命名其方法。

创建对象的方法必须从其方法名称开始 使用“new”,“alloc”,“copy”或“mutableCopy”。

请参阅: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html

例如,decodeSampleAtPath应重命名为“allocDecodeSampleAtPath”。 然后任何使用此方法的东西都必须释放它。

Finch中有很多方法都没有这样做,而且它们都应该修复。