[问题] objective-c 新手指标请教

楼主: wrt (一片小蛋糕)   2016-08-31 01:58:54
知道指标是回传内存位置
但是下面的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比较不一样?
作者: uranusjr (←這人是超級笨蛋)   2016-08-31 04:45:00
Objective-C object 的 dot notation 不是指标存取, 是特殊语法, 在这里对等于 [time setHour:10]http://d.pr/15F45 这里有几个例子和建议
楼主: wrt (一片小蛋糕)   2016-08-31 09:57:00
谢谢楼上我研究看看..
作者: Blueshiva (龙野南云)   2016-08-31 12:15:00
因为再底层是呼叫objc_msgSend(id self, SEL op, ...);而id本身就是一个指向 object 的指标
作者: appleway (苹果爱天空)   2016-08-31 12:45:00
btw, *time.hour shoulde be (*time).hour

Links booklink

Contact Us: admin [ a t ] ucptt.com