iOS:更改NSString值

时间:2013-06-09 14:21:36

标签: ios nsstring

这段代码是否会产生任何内存泄漏?这是更改NSString值的正确方法吗?

NSString * enemiesAndElementsTextureFileName = @"bla bla";
enemiesAndElementsTextureFileName = @"bl";

3 个答案:

答案 0 :(得分:2)

这样做不会导致任何内存泄漏,这确实是正确的。在这种情况下,您不需要NSMutableString,因为您不是在改变字符串文字本身,而只是用新的字符串值替换字符串值(用@“bl”替换@“bla bla”)。

但是,在这种情况下,您的字符串现在将为“bl”,因此您可以删除该第一行值并只有NSString * enemiesAndElementsTextureFileName = @"bl";

答案 1 :(得分:1)

是NSString分配一次。这是其中一种方式

答案 2 :(得分:1)

是的,根据需要使用NSMutableString和以下方法:

// Allocate  
NSMutableString *str = [[NSMutableString alloc] initWithCapacity:10];  
// set string content  
[str setString:@"1234"];  

// Append  
[str appendString:@"567"];  

// Concat  
[str appendFormat:@"age is %i and height is %.2f", 27, 1.55f];  

// Replace 
NSRange range = [str rangeOfString:@"height"];//查找字符串height的位置  
[str replaceCharactersInRange:range withString:@"no"];  

// Insert  
[str insertString:@"abc" atIndex:2];  

// Delete  
range = [str rangeOfString:@"age"];  
[str deleteCharactersInRange:range];  
NSLog(@"%@", str);