AudioUnit を使って音声の録音、再生を行なうプログラムを作成しているのですが、以下のようなバグに遭遇しました。色々手を尽くしては見たものの一向に改善しなかったため、質問させていただきます。

録音側のAURenderCallbackStructに設定したコールバック関数 AURenderCallback 内中段の NSMutableData *data でメモリリークを起こしているようです。(InstrumentsAllocations はずっと右肩上がりになっています:2.5KB/秒)

色々調査した結果分かった事↓です。

  • (中略) 部分を削除しても現象に変化はありません
  • AudioProcessor *recOSStatus status の行を削除しても現象に変化はありません
  • NSMutableData *data を削除すると Allocations はすぐに一定になります
  • NSMutableData *dataintNSData, NSArray に変更すると Allocation はすぐに一定になります。
  • NSMutableDataやNSMutableArray, NSObject では Allocation は一定にならず上昇をし続けたままになります
  • この現象はiPad mini (iOS 7.0.4) でのみ確認できていて、iPhone 4s (iOS7.1.1) では発生しませんでした。
OSStatus AURenderCallback(void *inRefCon,
                         AudioUnitRenderActionFlags *ioActionFlags,
                         const AudioTimeStamp *inTimeStamp,
                         UInt32 inBusNumber,
                         UInt32 inNumberFrames,
                         AudioBufferList *ioData)
{    
    AudioProcessor *rec = (__bridge AudioProcessor *) inRefCon;

    OSStatus status = AudioUnitRender([rec audioUnit], ioActionFlags, inTimeStamp, inBusNumber, inNumberFrames, &testbufferList);


    NSMutableData *data = [[NSMutableData alloc] init];
    /*
        ~(中略)~
    */
    return noErr;
}

以上、ご教示ください。