NSString是一個Unicode編碼,16位字符的字符序列
NSString被定義為類,是一個引用類型,拷貝時就是拷貝指針
使用字符串的第一步,是初始化
三種初始化方式:
字面常量
NSString *str1=@"Hello World!";
內存分配,再搭配初始化器,編碼方式
NSString *str2=[[NSString alloc]initWithCString:"Hello World!" encoding:NSUTF8StringEncoding];
工廠方法,是一個類方法,類方法內部返回一個新的對象
NSString *str3=[NSString stringWithCString:"Hello World!" encoding:NSUTF8StringEncoding];
NSString具有恒定性,所有操作無法更改字符串本身,如有更改,都是返回新值的形式
使用字面常量初始化方式,NSString具有共享機制
NSMutableString具有可變性,NSString具有恒定性
NSMutableString不具有共享機制,NSString具有共享機制
NSMutableString不是在原有內存上直接增長,而是重新分配一個更大或更小的緩存容量存放字符
字符串初始化后,會分配一個緩存容量capacity,其長度一般大于實際的字符串數量,當然也可以自己給它一個緩存容量
當字符串增長時,如果實際需求大于capacity,其capacity會以兩倍的方式指數增長,代價是:分配新的堆內存2*capacity,將原來堆內存的內容拷貝到新內存,再釋放原來堆內存
最佳實踐:估計好capacity,預先分配好一定容量,避免以后capacity的增長