NSString * str = [[NSString alloc]initWithFormat:@"aaaaa"];NSString *temp = [str subStringFromIndex:3];
[temp uppercaseString];/*这里对  temp  进行操作对么?如果将上面的两句代码改成如下,有没有必要?区别在哪里?NSString *temp = [str subStringFromIndex:3];
[temp retain];
[temp uppercaseString];
[temp release];
*/[str release];

解决方案 »

  1.   

    1. uppercaseString不会修改原字符串,它将产生一个新字符串。因此应该这样用:
     NSString *str2 = [temp substringFromIndex];2. substringFromIndex 和 substringFromIndex产生的字符串不用自己release,它是自动释放的。建议写法:{
        NSString * str = [NSString stringWithFormat:@"aaaaa"];
        NSString *temp = [str substringFromIndex:3];
        NSString *str2 = [temp uppercaseString];
    }