Как инициализировать NSString к NSMutableString?

Я записал сообщение в блоге об этом: http://blogs.msdn.com/kirillosenkov/archive/2009/01/31/foreach.aspx

можно голосовать здесь, если требуется видеть этот метод в.NET 4.0: http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=279093

6
задан Beau Nouvelle 7 February 2016 в 21:27
поделиться

3 ответа

NSString - неизменяемое представление (или, в худшем случае, представление только для чтения). Таким образом, вам нужно будет либо привести к NSMutableString , если вы знаете, что он изменяемый, либо сделать изменяемую копию:

-(void)st:(NSString *)st
{
  NSMutableString *str =  [[st mutableCopy] autorelease];
  NSLog(@"string: %@", str);
}

Я выпустил его автоматически, потому что mutableCopy возвращает вновь инициализированную копию с сохраненным счетчиком из 1.

10
ответ дан 8 December 2019 в 12:20
поделиться
NSString *someImmutableString = @"something";
NSMutableString *mutableString = [someImmutableString mutableCopy];

Важно! mutableCopy возвращает объект, которым вы владеете, поэтому вы должны либо освободить, либо автоматически освободить его.

4
ответ дан 8 December 2019 в 12:20
поделиться

Вы можете установить NSMutableString на NSString, но не наоборот,

NSString *str =  [NSMutableString alloc]init];

- это нормально, а

NSMutableString *str = [[NSString alloc]init];

- нет. Это потому, что NSMutableString является подклассом NSString, поэтому это «NSString». Однако вы можете создать изменяемую строку из NSString с помощью

NSMutableString *mStr = [str mutableCopy];
4
ответ дан 8 December 2019 в 12:20
поделиться