这段代码是否会产生任何内存泄漏?这是更改NSString值的正确方法吗?
NSString * enemiesAndElementsTextureFileName = @"bla bla";
enemiesAndElementsTextureFileName = @"bl";
答案 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);