GeekBand OC 8. 字符串处理

2016-05-20  本文已影响16人  robinn9810

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++)

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

上一篇下一篇

猜你喜欢

热点阅读