【问题标题】:After wav files are merged the NSURL is nil合并 wav 文件后,NSURL 为 nil
【发布时间】: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


【解决方案1】:

很抱歉没有尽快发布,但问题是在将变量发送到问题中描述的方法之前对变量进行了错误的释放/自动释放调用。我通过从头到尾跟踪变量并检查它在做什么以及发生了什么来找到它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    • 2016-07-31
    • 2015-10-05
    • 2022-07-11
    • 2011-04-24
    • 2014-10-11
    • 1970-01-01
    相关资源
    最近更新 更多