Foundation框架: 7.NSMutableString的基本认识

在前面我们讲完了NSString, 对NSString有了一个基本的认识, 知道它是怎么创建, 怎么导入和导出, 现在我们来看看继承于NSStringNSMutableString, 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


看完这个例子, 有人会疑问, 打印出来的结果不是一样的吗, 那既然是这样子, 为什么还要搞一个子类呢?? 



别急, 下面然让我们来看看示意图:




这是我们上面那个例子所示的, 继续往下看:




而这个呢, 就是NSMutableStringNSString最大的区别, 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



看到结果我们就知道了NSMutableStringNSString本质上的区别了, 还有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啦, 好了这次我们就讲到这里, 下次我们继续~~~

原文地址:https://www.cnblogs.com/iOSCain/p/4282809.html