0

我想访问不同类中的一些声音,并且可以读取和更改多个类中每个声音的音高值。然后我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:]

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

4

2 回答 2

1

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

于 2012-02-22T13:30:27.643 回答
-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 中有很多方法不这样做,它们都应该被修复。

于 2012-02-21T22:14:52.530 回答