У меня есть NSMutableString, как я могу преобразовать его в NSString?
Цель C: преобразовать NSMutableString в NSString
Ответ 1
Либо через:
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;
что делает его неизменным, хотя на самом деле он остается изменчивым.
Многие методы фактически возвращают изменяемые экземпляры, несмотря на то, что они объявлены для возврата неизменяемых.
Ответ 2
NSMutableString
является подклассом NSString
, поэтому вы можете просто его придать:
NSString *string = (NSString *)mutableString;
В этом случае string
будет псевдонимом mutalbeString
, но компилятор будет жаловаться, если вы попытаетесь вызвать на нем какие-либо изменяемые методы.
Кроме того, вы можете создать новый NSString с помощью метода класса:
NSString *string = [NSString stringWithString:mutableString];