Цель C: преобразовать NSMutableString в NSString - PullRequest
60 голосов
/ 07 апреля 2011

У меня есть NSMutableString, как я могу преобразовать его в NSString?

Ответы [ 2 ]

93 голосов
/ 07 апреля 2011

Либо через:

NSString *immutableString = [NSString stringWithString:yourMutableString];

или через:

NSString *immutableString = [[yourMutableString copy] autorelease];
//Note that calling [foo copy] on a mutable object of which there exists an immutable variant
//such as NSMutableString, NSMutableArray, NSMutableDictionary from the Foundation framework
//is expected to return an immutable copy. For a mutable copy call [foo mutableCopy] instead.

Будучи подклассом NSString, вы можете просто привести его к NSString

NSString *immutableString = yourMutableString;

делая его неизменным, даже если он на самом деле остается изменяемым.
Многие методы фактически возвращают изменяемые экземпляры, несмотря на то, что они объявлены как возвращающие неизменяемые.

3 голосов
/ 07 апреля 2011

NSMutableString является подклассом NSString, так что вы можете просто ввести его:

NSString *string = (NSString *)mutableString;

В этом случае string будет псевдонимом mutalbeString, но компилятор будет жаловаться, если вы попытаетесь вызвать какие-либо изменяемые методы для него.

Кроме того, вы можете создать новую строку NSString с помощью метода class:

NSString *string = [NSString stringWithString:mutableString];
...