このコードはメモリ リークを引き起こしますか? NSString 値を変更する正しい方法ですか?
NSString * enemiesAndElementsTextureFileName = @"bla bla";
enemiesAndElementsTextureFileName = @"bl";
その方法ではメモリリークは発生せず、実際に正しいです。この場合NSMutableString
、文字列リテラル自体を変更していないため、必要はありません。単に文字列値を新しいものに置き換えているだけです (@"bla bla" を @"bl" に置き換えています)。
ただし、この場合、文字列は「bl」になるため、最初の行の値を削除して、NSString * enemiesAndElementsTextureFileName = @"bl";
はい、必要に応じて次のメソッドで 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);
はい NSString は一度割り当てられます。これは方法の1つです