美文网首页
GeekBand第二周Object-C~8.字符串处理

GeekBand第二周Object-C~8.字符串处理

作者: 霏誠拜咬o | 来源:发表于2016-03-11 16:58 被阅读0次

    ~认识字符串 NSString

    ·NSString是一个Unicode编码、16位字符的字符序列。

    ·NSString被定义为类,引用类型,拷贝时具有引用语义。

    ·初始化方法:字面量初始化、初始化器、工厂方法。

    ·NSString拥有横定性,所有的操作无法更改字符串本身,如有更改,都是返回值新的形式。

    ·NSString拥有共享机制,引用计数管理对其有特殊的管理规则。

    ~NSMutableString

    ·NSMutableString具有可变性,NSString具有恒定性。

    ·NSMutableString为NSString的子类。

    ·NSMutableString不具有共享机制,NSString具有共享机制。

    ·NSMutableString并不是原有内存上直接增长,而是重新分配一个更大或更小的缓存容量存放字符。

    ~缓存容量与增长

    ·字符串初始化后,会分配一个缓存容量capacity,其长度一般大于实际的字符数量

    ·当字符串增长时,如果实际需求大于capacity,其capacity会以二倍的方式指数增长。伴随的代价:

        1.分配新的堆内存 2*capacity

        2.将原来堆内存上的内容拷贝到新内存

        3.释放原来堆内存

    ·最佳实践估计好capacity,预先分配好一定容量,避免以后capacity的增长。

    ~NSString常用操作

    ·NSString:

        1.访问字符串:获取字符串字符、字符串长度、字面量、大小写特换。

        2.查询字符串:定位子串、获取子串、是否包含子串、查询字符集。

        3.其他操作:比较字符串、替换字符串。分解字符串。

    ·NSMutableString:

        1.添加字符串

        2.删除字符串

        3.修改字符串


    学习笔记:

        1.NSString具有恒定性,NSMutableString具有可变性,但是后者是前者的子类,当后者赋值给前者的时候,前者会随着后者的改变而改变,可见这是一个OC的漏洞,具体实例如下:

    //----------------NSMutableString的可变性------

    NSMutableString *mustr1 = [NSMutableString stringWithString: @"Hello,World!"];

    NSLog(@"mustr1:%p",mustr1);

    NSMutableString *mustr2 = [NSMutableString stringWithString: @"Hello,World!"];

    NSLog(@"mustr2:%p",mustr2);

    NSString *str5=mustr1;

    NSLog(@"str5:%@",str5);

    [mustr1 appendString:@" Very Good!"];

    NSLog(@"str5:%@",str5);

    相关文章

      网友评论

          本文标题:GeekBand第二周Object-C~8.字符串处理

          本文链接:https://www.haomeiwen.com/subject/jnqxlttx.html