在前面我们讲完了NSString, 对NSString有了一个基本的认识, 知道它是怎么创建, 怎么导入和导出, 现在我们来看看继承于NSString的NSMutableString, Mutable是可变的意思, 那NSMutableString顾名思义就是可变字符串的意思, 那什么时候可变字符串呢, 下面让我们一起来看看:
例子:
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { NSMutableString *s1 = [[NSMutableString alloc] initWithFormat:@"name is rose"]; NSString *s2 = [[NSString alloc] initWithFormat:@"name is rose"]; NSLog(@"s1 = %@, s2 = %@", s1, s2); return 0; }
打印出来的结果:
2015-02-04 14:51:25.830 3.NSMutableString[1163:303] s1 = name is rose, s2 = name is rose
看完这个例子, 有人会疑问, 打印出来的结果不是一样的吗, 那既然是这样子, 为什么还要搞一个子类呢??
别急, 下面然让我们来看看示意图:
这是我们上面那个例子所示的, 继续往下看:
而这个呢, 就是NSMutableString和NSString最大的区别, NSMutableString可以直接添加或者删除原来的字符串, 而NSString则不能, 因为它是不可变的, 而图中的s3的做法只是把s2里面的字符串内容直接拷贝过来, 再往后面修改某些内容再返回给NSString对象, 看看下面的例子就知道了:
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { NSMutableString *s1 = [[NSMutableString alloc] initWithFormat:@"name is rose"]; [s1 appendString:@" jack"]; NSString *s2 = [[NSString alloc] initWithFormat:@"name is rose"]; NSString *s3 = [s2 stringByAppendingString:@" jack"]; NSLog(@"s1 = %@, s2 = %@, s3 = %@", s1, s2, s3); return 0; }
打印出来的结果:
2015-02-04 15:05:46.453 3.NSMutableString[1253:303] s1 = name is rose jack , s2 = name is rose , s3 = name is rose jack
看到结果我们就知道了NSMutableString和NSString本质上的区别了, 还有NSMutableString的删除字符串方法:
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { NSMutableString *s1 = [[NSMutableString alloc] initWithFormat:@"name is rose"]; [s1 appendString:@" jack "]; NSRange range = [s1 rangeOfString:@"rose "]; [s1 deleteCharactersInRange:range]; NSLog(@"s1 = %@", s1); return 0; }
打印出来的结果:
2015-02-04 15:09:13.549 3.NSMutableString[1294:303] s1 = name is jack
还有一个, 由于NSMutableString是继承与NSString的, 所以NSString里面所有的方法都可以使用.
这就是NSMutableString啦, 好了这次我们就讲到这里, 下次我们继续~~~