22-字符串NSMutableString

1. 字符串的恒定性.
一旦创建1个字符串对象,那么这个字符串对象的内容就无法更改, 当我们修改字符串的时候,其实是重新的创建了1个字符串对象.
代码案例:
NSLog(@"-------------------");
NSString *str = @""; //@""
for(int i = 0; i < 50000; i++)
{
str = [NSString stringWithFormat:@"%@%d",str,i];
}
NSLog(@"-------------------");
会耗费很长的时间. 每次循环的时候 都会创建1个新的字符串对象.50000个,
因为字符串的恒定性.
2. 如何让这样的大批量的字符串拼接可以更加快速的1点.
1). 慢得原因: 因为字符串的恒定性,每次修改字符串的时候,是重新的创建1个对象,
2). 希望: 有没有一种对象是用来存储字符串的,并且存储在这个对象中的字符串数据可以更改.
3. NSMutableString
1). 是Foundation框架中的1个类.从NSString继承.
所以,NSMutableString对象是用来存储字符串数据的.
2). NSMutbaleString在父类NSString的基础之上的做扩展.
存储在NSSMutableString对象中的字符串数据可以更改.具备可变性.
直接可以改存储在NSMutableStirng对象中的字符串数据,不会新创建对象.
4. NSMutableString的用法
1). 既然是1个类,要使用的话,就得创建1个对象.
NSMutableString *str = [NSMutableString string];
2). 往可变字符串对象中追加字符串.
- (void)appendString:(NSString *)aString; 直接追加内容.
- (void)appendFormat:(NSString *)format, ... 以拼接的方式往可变字符串对象中追加内容.
3). 创建NSMutableString对象的时候,记住下面这样的初始化方式是不行的.
NSMutableString *str = @"jack";
@"jack" 是1个NSString对象,是1个父类对象.
而str指针是1个NSMutableString类型的 是1个子类类型的.
如果通过子类指针去调用子类独有的成员 就会运行错误.
4). NSMutableString从NSString继承.
在使用NSString的地方完全可以使用NSMutableString
5. 使用NSMutableString来做大批量的字符串拼接.
NSLog(@"~~~~~~~~~~~~");
NSMutableString *str = [NSMutableString string];
for(int i = 0; i < 100000; i++)
{
[str appendFormat:@"%d",i];
}
NSLog(@"~~~~~~~~~~~~");
这个时候 "biu"的一下就结束了. 为什么这么快>? 因为NSMutableString只有1个.每次修改的时候 直接修改的是这个对象中的数据.
6. 使用建议
1). 我们平时使用的时候,还是使用NSString. 因为效率高.
NSString *str1 = @"jack";
NSString *str2 = @"jack";
2). NSMutbaleString: 只在做大批量的字符串拼接的时候才使用.
大量拼接的时候,就不要去使用NSString 因为效率低下.\
10次以上.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值