作者wrt (一片小蛋糕)
看板MacDev
标题[问题] objective-c 新手指标请教
时间Wed Aug 31 01:58:54 2016
知道指标是回传记忆体位置
但是下面的code有点不了解
MyTime *time = [[MyTime alloc] init];
这段我大概懂,要求一段记忆体存放MyTime物件,用time指着那个记忆体.
time.hour = 10;
这段我就比较不懂,我知道是想要宣告hour=10
可是为什麽不是 *time.hour = 10;
___________
再读了一些资料了解到objective-c 物件的传递讯息特性。
不过还是有些地方不了解
如果一般宣告pointer
int a = 10;
int *b = &a; (这可以分解成int *b; b=&a)
*b == 10;
b == 0x00001
上述应该是没有错误吧?
那麽一开始的问题如果已经用*time宣告time是一个地址变数了
那为何之後不是*time.hour=10
或是[*time setHour:10]
time里面不是只有地址而已吗?要找到setHour不是应该是要*time找到地址对应的值setH
our才能传讯息吗?
还是说object的pointer比较不一样?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.241.102.252
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MacDev/M.1472579939.A.349.html
1F:→ uranusjr: Objective-C object 的 dot notation 不是指标存取, 是08/31 04:45
2F:→ uranusjr: 特殊语法, 在这里对等於 [time setHour:10]08/31 04:46
4F:→ wrt: 谢谢楼上08/31 09:57
5F:→ wrt: 我研究看看..08/31 10:10
※ 编辑: wrt (39.10.70.106), 08/31/2016 11:39:52
※ 编辑: wrt (39.10.70.106), 08/31/2016 11:41:01
6F:推 Blueshiva: 因为再底层是呼叫objc_msgSend(id self, SEL op, ...);08/31 12:15
7F:→ Blueshiva: 而id本身就是一个指向 object 的指标08/31 12:17
8F:→ appleway: btw, *time.hour shoulde be (*time).hour 08/31 12:45
意思是(*time).hour或time.hour都是一样的?
※ 编辑: wrt (39.10.70.106), 08/31/2016 14:20:10
9F:→ appleway: For lang C, (*time).hour == time->hour != *time.hour 09/01 02:56
10F:→ appleway: *time.hour is *(time.hour) you will dereference hour 09/01 02:57