Re: [問題] 新手一個問題
首先你要知道 "=" 的意思
"=" 叫做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
10/06 20:12, 3F
推
10/07 07:57, , 4F
10/07 07:57, 4F
討論串 (同標題文章)
MacDev 近期熱門文章
PTT數位生活區 即時熱門文章