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++)
更多字符串操作详见源代码