美文网首页
GeekBand OC 8. 字符串处理

GeekBand OC 8. 字符串处理

作者: robinn9810 | 来源:发表于2016-05-20 18:57 被阅读16次

    NSString 引用类型,用指针形式使用

    初始化:1. @“”字面量初始化 2. 初始化器方法 3. 工厂方法

    恒定性:不能更改字符串本身

    共享机制:字符串内容相同时两个指针会指向同一个对象(为了减少字符串重复带来的内存浪费)

    伪更改字符串:str1 = [str1 stringByAppendingString: @"Yes !"]; 此时并未真正更改字符串,而是让指针str1指向了一个新的字符串(新的内存地址)

    判断相等:

    1. 值相等:if( [str1 isEqualToString: str2] )

    2. 指针相等:str1==str2

    NSMutableString:无恒定性,无共享性,是NSString的子类

    初始化:NSMutableString *mustr1 = [NSMutableStringWithString:@"Hello World!"];

    直接更改:[mustr1 appendString: @"Very Good!" ];

    漏洞:如果定义时让NSString的指针指向一个NSMutableString的指针所指的字符串,那么更改NSMutableString的字符串时会同时改变NSString的字符串

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

    NSString*str5=mustr1;

    [mustr1appendString:@" Very Good!"];

    NSString定义时会预先分配一段缓存容量(大于实际所需),也可以手动分配:

    NSMutableString*mustr3 =[NSMutableString stringWithCapacity:100];

    然后就可以更改NSMutableString

    方法:

    1. appendString(附加)

    [mustr3 appendString:@"Hello Objective"];

    2. insertString(插入)

    [mustr3 insertString:@"-C" atIndex:mustr3.length];

    3. setString(替换)

    [mustr3 setString:@"Hi Objective"];

    当实际需求大于缓存容量时,缓存容量会自动变为原来的2倍,此过程较为复杂。因此最好预先估计并分配缓存容量,尽量不要让缓存容量自动增长。

    字符串基本操作

    1. sizeof(str1):占内存字节数

    2. str1.length:字符数量

    3. 遍历:

    for(int i =0; i < [str1 length]; i++)

    更多字符串操作详见源代码

    相关文章

      网友评论

          本文标题:GeekBand OC 8. 字符串处理

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