Objective C: convert a NSMutableString in NSString

后端 未结 2 1448
闹比i
闹比i 2021-02-02 05:11

I have an NSMutableString, how can I convert it to an NSString?

相关标签:
2条回答
  • 2021-02-02 05:32

    Either via:

    NSString *immutableString = [NSString stringWithString:yourMutableString];
    

    or via:

    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.
    

    Being a subclass of NSString however you can just cast it to an NSString

    NSString *immutableString = yourMutableString;
    

    making it appear immutable, even though it in fact stays mutable.
    Many methods actually return mutable instances despite being declared to return immutable ones.

    0 讨论(0)
  • 2021-02-02 05:57

    NSMutableString is a subclass of NSString, so you could just typecast it:

    NSString *string = (NSString *)mutableString;
    

    In this case, string would be an alias of mutalbeString, but the compiler would complain if you tried to call any mutable methods on it.

    Also, you could create a new NSString with the class method:

    NSString *string = [NSString stringWithString:mutableString];
    
    0 讨论(0)
提交回复
热议问题