NSString & NSMutableString

Immutable strings

 

//  Setup  two  variables  to  point  to  the  same  string 
NSString * str1 = @"Hello World"; 
NSString * str2 = str1; 

//  "Replace"  the  second  string 
str2 = @"Hello ikilimnik"; 

//  And  list  their  current  values 
NSLog(@"str1 = %@, str2 = %@", str1, str2); 

 

output:str1 = Hello World, str2 = Hello ikilimnik 



Mutable strings 

//  Setup  two  variables  to  point  to  the  same  string 
NSMutableString * str1 = [NSMutableString stringWithString:@"Hello World"]; 
NSMutableString * str2 = str1; 

//  "Replace"  the  second  string 
[str2 setString:@"Hello ikilimnik"]; 

//  And  list  their  current  values 
NSLog(@"str1 = %@, str2 = %@", str1, str2); 

 

output:str1 = Hello ikilimnik, str2 = Hello ikilimnik 

 

注意,當你使用不可變的NSString class時,替換舊的字符串的唯一方式就是創建一個新的字符串然後更新你的變量“str2”

來指向這個新的字符串。這個操作不會影響“str1”所指向的內容,因此它將繼續指向初始的字符串。

 

在NSMutableString的例子裏,我們沒有創建第二個字符串,而是通過改變已經存在的可變字符串“str2”的內容來代替。

由於str1和str2兩個變量都仍然指向同一個字符串對象,從nslog中可以看到它們值都將會被更新。

 

理解指針變量和它實際指向對象的不同是非常重要的。一個NSString對象是不可變的,但是這並不阻止你改變指向這個不

可變對象的指針的值。

 

"NSString *"這個數據類型代表一個NSString對象的指針,不是NSString對象本身。

"NSMutableString *"這個數據類型則是代表"NSMutableString"對象本身,這兩者是有區別的。

 

這也是有的時候我們使用NSMutableString類型字符串時,要使用copy的原因,因爲可能不想改變新的字符串時影響到舊的字符串的值。


From: http://blog.csdn.net/bl1988530/article/details/6548095

發佈了28 篇原創文章 · 獲贊 13 · 訪問量 95萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章