0

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

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

3 回答 3

2

这样做不会导致任何内存泄漏,并且确实是正确的。在这种情况下,您不需要 an,NSMutableString因为您没有更改字符串文字本身,您只是将字符串值替换为新值(将 @"bla bla" 替换为 @"bl")。

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

于 2013-06-09T14:37:44.690 回答
1

是的 NSString 分配一次。这是方法之一

于 2013-06-09T14:23:26.860 回答
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);
于 2014-08-07T11:38:00.530 回答