How to initialize NSString to NSMutableString?

前端 未结 4 1318
半阙折子戏
半阙折子戏 2020-12-18 05:41

Is there any way to initialize NSString to NSMutableString? and also reverse order?

-(void)st:(NSString *)st
{
  NSMutableString str = st; // gives warning..         


        
相关标签:
4条回答
  • 2020-12-18 06:23

    NSString is an immutable representation (or a readonly view at worst). So you would need to either cast to a NSMutableString if you know it's mutable or make a mutable copy:

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

    I autoreleased it because mutableCopy returns a newly initialized copy with a retain count of 1.

    0 讨论(0)
  • 2020-12-18 06:25
    NSString *someImmutableString = @"something";
    NSMutableString *mutableString = [someImmutableString mutableCopy];
    

    Important! mutableCopy returns an object that you own, so you must either release or autorelease it.

    0 讨论(0)
  • 2020-12-18 06:33

    You can set an NSMutableString to an NSString, but not the other way around

    NSString *str =  [NSMutableString alloc]init];
    

    is okay, but

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

    is not. This is because an NSMutableString is a subclass of NSString, so it 'is a' NSString. You can however create a mutable string from an NSString with

    NSMutableString *mStr = [str mutableCopy];
    
    0 讨论(0)
  • 2020-12-18 06:35

    Swift 2.0

    For Swift users, the following works in Xcode 7.

    var str : String = "Regular string"
    var mutableStr : NSMutableString = NSMutableString(string: str)
    
    0 讨论(0)
提交回复
热议问题