【发布时间】:2012-01-02 17:20:01
【问题描述】:
好的,我有这个方法(找到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]; 中的 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
这让我相信这是一个自动释放问题,但我找不到它!如果有人知道它可能在哪里,请告诉我。
问候
【问题讨论】:
-
提供的代码没有问题,也不是自动释放问题,因为在释放某些内容时引用不会归零,因此您会得到一个 EXC_BAD_ACCESS 而不是零指针。
-
将您上传的相关代码发布到服务器。
-
@joerick 在那种情况下,我想知道为什么它会无缘无故地被取消。我没有将其设置为零。这里的代码告诉我(第二次检查)在添加到 httprequest 之前它是空的。
标签: objective-c nsurl null