NSString和NSMutableString的區(qū)別

前言

有些初學(xué)者不太明白NSString和NSMutableString的區(qū)別,抑或是有著幾年開發(fā)經(jīng)驗(yàn)的老司機(jī)也只是會用萍聊,并沒有特別在意它們之間的區(qū)別,但是面試的時候可能就會問到悦析,下面我們就實(shí)際例子說明它們之間的區(qū)別寿桨。

NSString

例1:

NSString *str1 = @"張三";
NSLog(@"p1===============%p",str1);
str1 = @"李四";
NSLog(@"p2===============%p",str1);

輸出結(jié)果

2019-06-16 11:44:48.749016+0800 Test[92844:2722351] p1===============0x10c9be0b8
2019-06-16 11:44:48.749079+0800 Test[92844:2722351] p2===============0x10c9be0f8

例2:

NSString *str1 = @"張三";
NSString *str2 = str1;
NSLog(@"p3===============%p",str1);
NSLog(@"p4===============%p",str2);
    
str2 = @"李四";
NSLog(@"p5===============%p",str2);

NSLog(@"str1 = %@,str2 = %@",str1,str2);

輸出結(jié)果

2019-06-16 11:49:37.922460+0800 Test[92904:2725082] p3===============0x10a6980b8
2019-06-16 11:49:37.922529+0800 Test[92904:2725082] p4===============0x10a6980b8
2019-06-16 11:49:37.922591+0800 Test[92904:2725082] p5===============0x10a698118
2019-06-16 11:49:37.922662+0800 Test[92904:2725082] str1 = 張三,str2 = 李四

分析:例1中str1前后分別指向不同的內(nèi)存地址,例2中剛開始str1和str2同時指向@"張三"內(nèi)存地址强戴,后面str2指向了@"李四"亭螟,str1沒有變∑锎酰可以看出NSString *這種指針變量不變的是指針指向的內(nèi)容预烙,也即地址中的內(nèi)容,可以改變的是指針的指向陵刹,也即是可以改變地址默伍。

NSMutableString

例3:

NSMutableString *str3 = [NSMutableString stringWithString:@"熊大"];
NSLog(@"p6===============%p",str3);
[str3 setString:@"熊二"];
NSLog(@"p7===============%p",str3);

輸出結(jié)果

2019-06-16 12:15:10.410115+0800 Test[93089:2737934] p6===============0x600003f56910
2019-06-16 12:15:10.410187+0800 Test[93089:2737934] p7===============0x600003f56910

例4:

NSMutableString *str3 = [NSMutableString stringWithString:@"熊大"];
NSMutableString *str4 = str3;
    
NSLog(@"p8===============%p",str3);
NSLog(@"p9===============%p",str4);

[str4 setString:@"熊二"];
NSLog(@"p10===============%p",str4);

NSLog(@"str3 = %@,str4 = %@",str3,str4);

輸出結(jié)果

2019-06-16 12:19:14.085067+0800 Test[93135:2740470] p8===============0x600002d00060
2019-06-16 12:19:14.085134+0800 Test[93135:2740470] p9===============0x600002d00060
2019-06-16 12:19:14.085206+0800 Test[93135:2740470] p10===============0x600002d00060
2019-06-16 12:19:14.085290+0800 Test[93135:2740470] str3 = 熊二,str4 = 熊二

分析:例3中str3前后指向相同的內(nèi)存地址,例4中str3和str4始終也指向相同的內(nèi)存地址衰琐∫埠可以看出NSMutableString *這種指針變量改變的是指針指向的內(nèi)容,也即地址中的內(nèi)容羡宙,不變的是指針的指向狸剃,也即是不改變地址。

結(jié)論

  • NSString *指針變量指向的對象內(nèi)容不可變狗热,
  • NSMutableString *指針變量指向的對象內(nèi)容可以改變钞馁。
  • 這里的可變不可變指的是地址里面的內(nèi)容可變不可變。
  • NSMutableString可以避免頻繁操作字符串(比如拼接匿刮、截取等)創(chuàng)造出新的字符串引起性能問題
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末僧凰,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子熟丸,更是在濱河造成了極大的恐慌训措,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件光羞,死亡現(xiàn)場離奇詭異绩鸣,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)纱兑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進(jìn)店門呀闻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人潜慎,你說我怎么就攤上這事捡多”涂担” “怎么了?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵局服,是天一觀的道長钓瞭。 經(jīng)常有香客問我,道長淫奔,這世上最難降的妖魔是什么山涡? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮唆迁,結(jié)果婚禮上鸭丛,老公的妹妹穿的比我還像新娘。我一直安慰自己唐责,他們只是感情好鳞溉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鼠哥,像睡著了一般熟菲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上朴恳,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天抄罕,我揣著相機(jī)與錄音,去河邊找鬼于颖。 笑死呆贿,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的森渐。 我是一名探鬼主播做入,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼同衣!你這毒婦竟也來了竟块?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤耐齐,失蹤者是張志新(化名)和其女友劉穎彩郊,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蚪缀,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年恕出,在試婚紗的時候發(fā)現(xiàn)自己被綠了询枚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡浙巫,死狀恐怖金蜀,靈堂內(nèi)的尸體忽然破棺而出刷后,到底是詐尸還是另有隱情,我是刑警寧澤渊抄,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布尝胆,位于F島的核電站,受9級特大地震影響护桦,放射性物質(zhì)發(fā)生泄漏含衔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一二庵、第九天 我趴在偏房一處隱蔽的房頂上張望贪染。 院中可真熱鬧,春花似錦催享、人聲如沸杭隙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽痰憎。三九已至,卻和暖如春攀涵,著一層夾襖步出監(jiān)牢的瞬間铣耘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工汁果, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留涡拘,地道東北人。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓据德,卻偏偏與公主長得像鳄乏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子棘利,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評論 2 353

推薦閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,096評論 1 32
  • 在 Objective-C 的編程中橱野,NSString 是使用率非常高的一個類,用法也很簡單善玫。 NSString ...
    _賴筆小新閱讀 4,011評論 5 9
  • 其實(shí)NSString和NSMutableString的區(qū)別的主要區(qū)別只有一點(diǎn) 官方為了性能考慮K!茅郎! NSStri...
    蘿卜絲巾閱讀 332評論 0 0
  • __block和__weak修飾符的區(qū)別其實(shí)是挺明顯的:1.__block不管是ARC還是MRC模式下都可以使用蜗元,...
    LZM輪回閱讀 3,304評論 0 6
  • 一天停下來,是夜系冗,面對自己的內(nèi)心奕扣, 發(fā)覺,我在一條路上走著掌敬,去向哪里惯豆,已經(jīng)不問池磁,只是在走! 問候兒子楷兽,他在吃飯地熄,中...
    馨欣然閱讀 498評論 4 10