0

異なるクラスのいくつかのサウンドにアクセスしたいのですが、複数のクラスの各サウンドのピッチ値を読み取って変更できます。次にextern FISound *mySound、アプリケーションのデリゲート メソッドで使用し、View Controller にロードしました。それは魅力のように機能していますが、問題は常にメモリリークがあることです[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 に答える