在iOS开发中,我们通常使用stringWithFormat来拼接字符串。例如:

```objc

int main(int argc, const char * argv[]) {

NSString *name = @"jack";

int age = 20;

NSString *str = [NSString stringWithFormat:@"我的名字%@,今年:%d", name, age];

NSLog(@"%@", str);

return 0;

}

```

效果如下:

但是NSString有一个特性,就是它存储的字符串是不可变的,这意味着在拼接字符串时,每次都会创建一个新的字符串对象,从而导致效率低下。例如:

```objc

NSString *str = @"";

NSLog(@"--------");

for (int i = 0; i < 50000; i++) {

str = [NSString stringWithFormat:@"%@%d", str, i];

}

NSLog(@"--------");

```

当我们需要进行大量数据拼接时,效率会变得非常低。为了解决这个问题,我们可以使用NSMutableString。NSMutableString是一个可变的字符串对象,它存储在内存中,因此在拼接字符串时不会创建新的对象,从而提高了效率。例如:

```objc

NSMutableString *str = [NSMutableString string];

NSLog(@"---------");

for (int i = 0; i < 50000; i++) {

[str appendFormat:@"%d", i];

}

NSLog(@"------");

```

总之,NSMutableString是对NSString的一个扩展,它允许我们在内存中存储和修改字符串,从而提高了拼接字符串的效率。当然,它还提供了一个appendString方法来方便地对字符串进行拼接。

```objc

NSMutableString *str = [NSMutableString string];

[str appendString:@"lilei"];

[str appendString:@"rose"];

[str appendString:@"jack"];

NSLog(@"%@", str);

```