NSString 是 Objective-C 中处理字串的资料类型,虽然我们可以用 C 的字串,但因方便性等因素,我们通常用 NSString ,与 C 字串不同的是,它不是一个阵列,而是一个类别,由 ”@“ 开头,而在输出时,我们用 ﹪@ 来表示NSString。


NSString 是一个类别,所以我们最常用 stringWithFormat: 来生成它,例如


  NSString *theString=[NSString stringWithFormat:@"Hello"];
  NSLog(@"%@",theString); 


如果像这样只是单纯的文字,XCode 提供了一个简便的方法,就是 【@”字串“】来生成,所以上面的程式,我们也可以写成像这样:

  NSString *theString=@"Hello";
  NSLog(@"%@",theString); 


其实 Cocoa 程式库中,有非常多的 method 用来分割,取出,计算长度等,但 NSString 是一个【不可变】的资料类型,什么是不可变呢?就是设定时,必需一次设好,不能附加或修改,只能重新指定,如上例中如果我们要再把字串加成  Hello World,那就必需要这样写

  NSString *theString=@"Hello";
  theString=[NSString stringWithFormat:@"%@%@",theString,@" World!"];
  NSLog(@"%@",theString);

 这在处理简单的加入还好,但如果要处理比较大的字串,如页面资料时,就不是很方便了,此时,我们就要使用 NSMutableString 了。

NSMutableString 是 NSString 的子类,所以继承了 NSString 的所有特性,并增加了一些可变值的特性,如附加字串,但它仍然不是NSString 所以指接指定字串是前面加上(NSMutableString *)来转型。如果上面的程式改用NSString 来写,就可以写成这样


        NSMutableString *theString=(NSMutableString *)@"Hello";

        [theString appendFormat:@" World"];

        NSLog(@"%@",theString);
 

 那何时使用 NSString 又何时使用 NSMutableString 呢?原则上 Cocoa touch 程式库中,很多的大多数的回应都是 NSString ,一般用来也没什么大问题,所以在遇到必需个别处理字元时,再转换就可以了。

你也可以参考在 Category
这个 Demo 中,使用 NSMutiableString 的原因与实例。

相关文章