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