EXC_AD_ACCESS 好字符串

EXC_AD_ACCESS on good string

我使用自己的日志功能记录一个条目:

if(drive1SandboxBookmark)dapperLog(logWindow,100,@"Got a sandbox bookmark for %@",drive1SandboxBookmark);

我似乎无缘无故地从此函数获得错误的 Exe 访问权限。现在有时甚至在 for mat 字符串只是一个字符串,没有参数的情况下这样做......完全难倒:

void dapperLog(logWindowController *controller,int level,NSString *format, ...) {

    if(logLevel<level)return;
    va_list argumentList;
    va_start(argumentList, format);
    if(!format)return;
    NSLog(@"%@",format);

    NSMutableString * message = [[NSMutableString alloc] initWithFormat:format
                                                              arguments:argumentList];
    va_end(argumentList);
    if(currentRunningOSVersion<100900){
        NSLog(@"%@",message);
    return;
    }

如果 format 中的第一项包含占位符(例如 %@)但没有相应的参数,则会出现异常。顺便说一句:你根本不需要 mutable 字符串。