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