Ios OC崩溃:将NSMutableString作为NSString返回以供使用

Ios OC崩溃:将NSMutableString作为NSString返回以供使用,ios,objective-c,assembly,Ios,Objective C,Assembly,在发布模式下构建并运行,然后崩溃 - (NSString *)testMutableStringReturnStringCrash{ NSString *str = nil; if(str.length <= 0){ str = mutableStringAsNSString(); }else{ str = @"1"; } str = str.length > 0 ? str : @"2"; str

在发布模式下构建并运行,然后崩溃

- (NSString *)testMutableStringReturnStringCrash{
    NSString *str = nil;

    if(str.length <= 0){
        str = mutableStringAsNSString();
    }else{
        str = @"1";
    }

    str = str.length > 0 ? str : @"2";
    str = str.length > 0 ? str : @"3";

    NSString *content = [NSString stringWithFormat:@"%@", str];
    return content;
}


NSString *mutableStringAsNSString(){
    return [NSMutableString stringWithString:@"0"];
}
-(NSString*)testMutableStringReturnStringCrash{
NSString*str=nil;
如果(str.length 0?str:@“2”;
str=str.length>0?str:@“3”;
NSString*内容=[NSString stringWithFormat:@“%@”,str];
返回内容;
}
NSString*mutableStringAsNSString(){
返回[NSMutableString stringWithString:@“0”];
}
我发现这是一个关于代码汇编语言的问题 但我不明白为什么。

当设置str=str.length>0时?str:@“2”,str是uu NSCFString not muti,所以你重置str make crash

你能解释一下这段代码的真正目的吗?你怎么知道这段代码是崩溃的根源?对我来说,根本没有崩溃项目文件中发生的崩溃。我只是提取了崩溃代码的一部分。你设置了构建配置版本了吗ide重新复制的崩溃日志?我不这么认为。崩溃是因为它被发布了两次。