AVAudioRecorder Speicherverlust

Ich hoffe, jemand da draußen kann mich dabei unterstützen ...

Ich habe an einer Anwendung gearbeitet, mit der der Endbenutzer eine kleine Audiodatei für die spätere Wiedergabe aufzeichnen kann, und bin dabei, nach Speicherlecks zu suchen. Ich stoße weiterhin sehr häufig auf einen Speicherverlust, wenn die "Stop" -Methode des AVAudioRecorders versucht, die Audiodatei zu schließen, auf die gerade aufgezeichnet wird. Dies scheint wirklich ein Leck im Framework selbst zu sein, aber wenn ich ein Bonehead bin, kannst du es mir sagen.

Zur Veranschaulichung habe ich eine abgespeckte Test-App entwickelt, die nichts anderes tut, als eine Aufnahme auf Knopfdruck zu starten / zu stoppen. Der Einfachheit halber geschieht alles in der App. wie folgt delegieren:

@synthesize audioRecorder, button;
@synthesize window;

- (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
 // create compplete path to database
 NSString *tempPath = NSTemporaryDirectory();
 NSString *audioFilePath = [tempPath stringByAppendingString:@"/customStatement.caf"];

 // define audio file url
 NSURL *audioFileURL = [[NSURL alloc] initFileURLWithPath:audioFilePath];

 // define audio recorder settings
 NSDictionary *settings = [[NSDictionary alloc] initWithObjectsAndKeys:
      [NSNumber numberWithInt:kAudioFormatAppleIMA4], AVFormatIDKey,
      [NSNumber numberWithInt:1], AVNumberOfChannelsKey,
      [NSNumber numberWithInt:AVAudioQualityLow], AVSampleRateConverterAudioQualityKey,
      [NSNumber numberWithFloat:44100], AVSampleRateKey,
      [NSNumber numberWithInt:8], AVLinearPCMBitDepthKey,
      nil
 ];

 // define audio recorder
 audioRecorder = [[AVAudioRecorder alloc] initWithURL:audioFileURL settings:settings error:nil];
 [audioRecorder setDelegate:self];
 [audioRecorder setMeteringEnabled:YES];
 [audioRecorder prepareToRecord];

 // define record button
 button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
 [button addTarget:self action:@selector(handleTouch_recordButton) forControlEvents:UIControlEventTouchUpInside];
 [button setFrame:CGRectMake(110.0, 217.5, 100.0, 45.0)];
 [button setTitle:@"Record" forState:UIControlStateNormal];
 [button setTitle:@"Stop" forState:UIControlStateSelected];

 // configure the main view controller
 UIViewController *viewController = [[UIViewController alloc] init];
 [viewController.view addSubview:button];

 // add controllers to window
 [window addSubview:viewController.view];
 [window makeKeyAndVisible];

 // release
 [audioFileURL release];
 [settings release];
 [viewController release];

 return YES;
}

- (void) handleTouch_recordButton {
 if ( ![button isSelected] ) {
      [button setSelected:YES];
      [audioRecorder record];

 } else {
      [button setSelected:NO];
      [audioRecorder stop];
 }
}

- (void) dealloc {
 [audioRecorder release];
 [button release];

 [window release];

 [super dealloc];
}

Der Stack-Trace von Instruments zeigt ziemlich deutlich, dass die "closeFile" -Methode im AVFoundation-Code undicht ist ... etwas. Hier können Sie einen Screenshot der Instruments-Sitzung sehen:Entwicklerforen: AVAudioRecorder Memory Leak

Alle mögliche Gedanken würden sehr geschätzt!