代码之家  ›  专栏  ›  技术社区  ›  Ladislav

对NSMutableString使用substringFromIndex

  •  0
  • Ladislav  · 技术社区  · 14 年前

    为什么是 substringFromIndex 不是为我儿子工作 NSMutableString ?

    这里的代码与我的代码类似:

    NSMutableString *myString = [[NSMutableString alloc] initWithString:@"This is my String"];
    
    [myString substringFromIndex:5];
    
    NSLog(@"myString = %@", myString); //will output This is my String
    

    NSString 它将起作用,例如:

    NSString *tempStr = [[NSString alloc] init];
    tempStr = [myString substringFromIndex:5]; 
    NSLog(@"tempStr = %@", tempStr); //will output is my String 
    

    为什么在第一个例子中不起作用,我还有一个问题,如果我使用第二个方法,然后设置:

    [myString setString:tempStr];
    [tempStr release];
    

    可修改的字符串 NSString字符串 我释放了它,但显然不是这样,但是如果我使用自动释放它就可以了

    3 回复  |  直到 10 年前
        1
  •  4
  •   Alex Wayne    14 年前

    这个方法永远不会改变你调用它的字符串。在这两种情况下,它都返回一个新字符串。所以把它赋给一个新的字符串变量,你就好了。


    它崩溃是因为你过度释放了一个物体,又泄漏了另一个。你呢 alloc substringFromIndex: ,然后释放它。你不需要这么努力。

    只需将substring方法的输出赋给一个变量,然后让它自动释放。不分配,不释放。


    一个完整正确的示例可能如下所示:

    NSMutableString *myString = [[NSMutableString alloc] initWithString:@"This is my String"];
    NSString *tmpString = [myString substringFromIndex:5];
    NSLog(@"tempStr = %@", tempString);
    [myString setString:tempStr];
    
    // later do [myString release]
    

    或者更简单:

    NSString *myString = @"This is my String";
    myString = [myString substringFromIndex:5];
    
        2
  •  2
  •   Patricia    14 年前

    您专门创建了一个NSMutableString 可以 修改它。

    但没人知道怎么做:

    [myMutableString子字符串]起始索引:5];

    myMutableString=[myMutableString子字符串起始索引:5];

    添加 (附加)到他们身上。

        3
  •  1
  •   wm_eddie    14 年前

    [myString substringFromIndex:5] 返回一个新的 NSString 从指定索引开始的。它不会修改 myString .

    请尝试以下代码:

    NSLog(@"myString = %@", [myString substringFromIndex:5]);