看板 MacDev 關於我們 聯絡資訊
首先你要知道 "=" 的意思 "=" 叫做assign Objective-C裡面的物件的變數都是指標 這也是為什麼NSString* string會有一個星號 星號代表宣告的變數為指標 指標事實上就是存著一個記憶體位置 ex:0x0010cb54 而"=" 就是把右邊的值 assign給左邊的變數 這裡給你一個口訣 「右邊指到哪裡,左邊就指到哪裡」 以下這兩行來說 1.NSString *string = [[NSString alloc] init] 2.string = @"abc" 在執行完1.的時候你把string印出來看看 然後再2.之後再把他印出來看看 兩者的位置是不一樣的 因為1.時, string指到的是 init後return的位置 2.之後, 因為"="的作用 所以string指到的位置改變了 指到了@"abc" return的位置 而@"acb"這種產生字串的方式 compiler只會產生一個"abc"字串 在整個程式碼裡面 只要你是寫 NSString *str = @"abc"; NSString *str2 = @"abc"; 都會指到同一個位置 「右邊指到哪裡,左邊就指到哪裡」 ※ 引述《lazyasa (asa)》之銘言: : 各位大大好 : 因為覺得觀念不太好 : 又重新去做了一些練習 : 然後有一個地方搞不懂 : NSString *string = @“abc”; : 跟 : NSString * string = [[NSString alloc] init]; : string = @"abc"; : 有兩個什麼不一樣呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.232.218.100
ck574b027:是我左右不分嗎?我怎麼覺得講反了? 10/06 02:38
whitefur:阿抱歉,是我打錯了 已修正 10/06 10:19
※ 編輯: whitefur 來自: 36.232.220.221 (10/06 10:20)
lazyasa:謝謝W大,懂了 :) 10/06 20:12
TsaoCCFGOGO:推這篇,深入淺出! 10/07 07:57