好的,我有这个方法(找到here)。它会将2个wav文件附加在一起,然后播放它们。该方法被调用如下:
if(soundFileURL != nil) {
NSURL *tempURL = [WavUtils mergeFile1:finalSoundFileURL withFile2:soundFileURL];
if(tempURL != nil) {
NSLog(@"Wav files have been merged: %@", [tempURL absoluteString]);
finalSoundFileURL = [tempURL retain];
[soundFileURL release];
soundFileURL = nil;
[recorder release];
recorder = nil;
} else {
NSLog(@"Wav files could not be merged.");
}
}
finalSoundFileURL = [tempURL retain];
中的保留已被除了保留之外的许多其他内容所取代,但它根本不起作用。合并完成后,我将检查文件包含的内容:
NSLog(@"Calculated: %d - Real: %d", totalLength, [soundFileData length]);
NSLog(@"From file: %d", [[NSData dataWithContentsOfURL:file1] length]);
这在日志中显示以下内容:
2012-01-02 18:20:28.549 App[2186:207] Calculated: 72146 - Real: 72146
2012-01-02 18:20:28.549 App[2186:207] From file: 72146
因此文件被填满,NSURL被填充并指向正确的文件。但是当我尝试将此文件发送到服务器时,我再次检查:
NSLog(@"Adding file: %@ with length: %d", [finalSoundFileURL absoluteString], [[NSData dataWithContentsOfURL:finalSoundFileURL] length]);
但是这会返回以下内容:
2012-01-02 18:22:38.980 App[2186:207] Adding file: (null) with length: 0
这让我觉得它是一个自动释放问题,但我找不到它!如果有人知道它可能在哪里,请告诉我。
此致
答案 0 :(得分:0)
很抱歉没有尽快发布,但问题是在变量发送到问题中描述的方法之前对变量进行了错误的发布/自动释放调用。我通过从开始到结束跟随变量找到它并检查它在做什么以及它发生了什么。