代码之家  ›  专栏  ›  技术社区  ›  Frank Shearar

audiofileopenurl在现有文件上返回-43

  •  1
  • Frank Shearar  · 技术社区  · 15 年前

    在我的应用程序中,有一个步骤是用户反复听到三个语音数字。

    如果我让此步骤运行一段时间(对于某些未定义的值“while”),我的调试日志将显示此信息(删除了不相关的日志条目):

    2010-03-01 13:44:21.283 iPhoneHearChk[1236:207] AudioFileOpenURL returned 0
     (for <file://localhost/var/mobile/Applications/3A28F975-EAD5-4A5B-AFE6-FA1C6EE95732/iPhoneHearChk.app/5b3.ima4>)
    2010-03-01 13:44:35.493 iPhoneHearChk[1236:207] AudioFileOpenURL returned 0
     (for <file://localhost/var/mobile/Applications/3A28F975-EAD5-4A5B-AFE6-FA1C6EE95732/iPhoneHearChk.app/5b3.ima4>)
    2010-03-01 13:45:17.916 iPhoneHearChk[1236:207] AudioFileOpenURL returned 0
     (for <file://localhost/var/mobile/Applications/3A28F975-EAD5-4A5B-AFE6-FA1C6EE95732/iPhoneHearChk.app/5b3.ima4>)
    2010-03-01 13:47:00.408 iPhoneHearChk[1236:207] AudioFileOpenURL returned -43
     (for <file://localhost/var/mobile/Applications/3A28F975-EAD5-4A5B-AFE6-FA1C6EE95732/iPhoneHearChk.app/5b3.ima4>)
    

    据我所读,macerrors.h将-43定义为fnerr,找不到文件。但很明显文件 存在,因为我以前成功打开过它。给出了什么?

    如何打开文件:

    NSString *soundFilePath = [[NSBundle mainBundle] pathForResource: name ofType: type];
    if (!soundFilePath) { NSLog(@"No path found for sound file %@.%@", name, type); }
    NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: soundFilePath];
    rc = AudioFileOpenURL((CFURLRef) fileURL, kAudioFileReadPermission, 0, &file);
    

    其中file是audiofileid instvar,name和type是nsstring*参数。

    1 回复  |  直到 15 年前
        1
  •  3
  •   Kristopher Johnson    15 年前

    是否可能文件句柄不足?完成后是否关闭打开的文件?