0

このコードはメモリ リークを引き起こしますか? NSString 値を変更する正しい方法ですか?

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

3 に答える 3

2

その方法ではメモリリークは発生せず、実際に正しいです。この場合NSMutableString、文字列リテラル自体を変更していないため、必要はありません。単に文字列値を新しいものに置き換えているだけです (@"bla bla" を @"bl" に置き換えています)。

ただし、この場合、文字列は「bl」になるため、最初の行の値を削除して、NSString * enemiesAndElementsTextureFileName = @"bl";

于 2013-06-09T14:37:44.690 に答える
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 に答える
1

はい NSString は一度割り当てられます。これは方法の1つです

于 2013-06-09T14:23:26.860 に答える