作者whitefur (白毛)
看板MacDev
标题Re: [问题] 新手一个问题
时间Sat Oct 5 20:27:10 2013
首先你要知道 "=" 的意思
"=" 叫做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
1F:→ ck574b027:是我左右不分吗?我怎麽觉得讲反了? 10/06 02:38
2F:→ whitefur:阿抱歉,是我打错了 已修正 10/06 10:19
※ 编辑: whitefur 来自: 36.232.220.221 (10/06 10:20)
3F:推 lazyasa:谢谢W大,懂了 :) 10/06 20:12
4F:推 TsaoCCFGOGO:推这篇,深入浅出! 10/07 07:57