Re: [問題] 新手一個問題

看板MacDev作者 (白毛)時間11年前 (2013/10/05 20:27), 編輯推噓2(202)
留言4則, 4人參與, 最新討論串2/2 (看更多)
首先你要知道 "=" 的意思 "=" 叫做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

10/06 02:38, , 1F
是我左右不分嗎?我怎麼覺得講反了?
10/06 02:38, 1F

10/06 10:19, , 2F
阿抱歉,是我打錯了 已修正
10/06 10:19, 2F
※ 編輯: whitefur 來自: 36.232.220.221 (10/06 10:20)

10/06 20:12, , 3F
謝謝W大,懂了 :)
10/06 20:12, 3F

10/07 07:57, , 4F
推這篇,深入淺出!
10/07 07:57, 4F
文章代碼(AID): #1IK0MX0q (MacDev)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1IK0MX0q (MacDev)