A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Lizzie 中级黑马   /  2014-10-15 21:27  /  1401 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Lizzie 于 2014-11-2 13:56 编辑

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


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

评分

参与人数 1技术分 +1 收起 理由
星河鹭起 + 1

查看全部评分

5 个回复

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

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

还是迷糊,不过刚做作业的时候发现老师给的答案中就说了id类型的变量不能用点语法,我先记住,以后再慢慢理解吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马