黑马程序员技术交流社区

标题: 使用id类型时,点语法报错 [打印本页]

作者: Lizzie    时间: 2014-10-15 21:27
标题: 使用id类型时,点语法报错
本帖最后由 Lizzie 于 2014-11-2 13:56 编辑

麻烦大家帮我看看,这里为什么不能使用点语法呢?
在Person的声明中用了@property int age;
然后在主函数中创建对象调用他的set和get方法。直接调用都可以,但是用点语法的时候就出现了下面的错误。


想着可能是用了@property的原因,但是_age的声明和它对应的set和get方法我手动写出来后,还是这个错误。

作者: 弹琴骚年    时间: 2014-10-15 22:40
id类型是OC中独有的数据类型,你可以理解为它可以存储任何类型的OC对象。
但id类型在内部处理上,这个类型是被定义为指向对象的指针。在OC中,对象本身就是用指针。
通过对象可以用点语法来调用setter方法和getter方法,但是id类型既然为指向对象的指针,自然就找不到对象本身的setter和getter方法了。。
不知道我这样说你听得懂不?:lol
作者: Lizzie    时间: 2014-10-16 09:05
弹琴骚年 发表于 2014-10-15 22:40
id类型是OC中独有的数据类型,你可以理解为它可以存储任何类型的OC对象。
但id类型在内部处理上,这个类型 ...

是有点迷糊。。。OC中的对象都是由指针来操作的,那既然id是指向对象的指针,而且我在这里也已经把Person新创建的对象定义为了id类型,那此时的id就是指向了Person新创建的这个对象,那为什么不能用点语法来调用set和get方法呢?完了~又回来了,还是没理解啊。。。
作者: x65396731    时间: 2014-10-16 09:20
2楼的意思我认为是说你用id类型系统就相当于认为这是一个oc对象,但是看的你代码age明显是个基本数据类型,两者间的差异导致了这个错误。

作者: 米匠    时间: 2014-10-16 15:40
还没看到OC,帮不上忙了
作者: Lizzie    时间: 2014-10-16 23:18
x65396731 发表于 2014-10-16 09:20
2楼的意思我认为是说你用id类型系统就相当于认为这是一个oc对象,但是看的你代码age明显是个基本数据类型, ...

还是迷糊,不过刚做作业的时候发现老师给的答案中就说了id类型的变量不能用点语法,我先记住,以后再慢慢理解吧




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2