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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Lxy 中级黑马   /  2014-10-21 20:41  /  1598 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

        Person * p = [Person new];
        id p1 = [Person new];
        [p1 setAge:10];
        NSLog(@"%d", [p1 age]);
        //NSLog(@"%d", p1.age); // 会报错,为什么???求大师指点
        NSLog(@"%d", p.age);// 这个就OK



评分

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

查看全部评分

9 个回复

倒序浏览
你 NSLog(@"%d", [p1 age]);  后面括号里的是什么[P1 age]?
回复 使用道具 举报
id类型的变量不能用点语法的
回复 使用道具 举报
id 相当于NSObject *  多态 你用父类指针指向子类特有的成员变量  但是编译器在ID类型中没有找到这个成员变量  一般需要强制转换成Person对象
  1.     id p1=[[person alloc]init];
  2.     person *p2=(person *)p1;
  3.     p2.age=10;
  4.     NSLog(@"p2.age = %d",p2.age);
复制代码
回复 使用道具 举报
这个肯定可以的,你再看看视频,完全是和视频里面一样的写法怎么会不行呢,如果不说不一样的地方,那就是你没有写age的set和get方法,你添加一下试试~~
回复 使用道具 举报
父类的调用子类的,报错正常啊
回复 使用道具 举报
Lxy 中级黑马 2014-10-22 12:26:09
7#
弹琴骚年 发表于 2014-10-21 21:49
id类型的变量不能用点语法的

为什么?哪里讲到的?
回复 使用道具 举报
Lxy 中级黑马 2014-10-22 12:27:21
8#
冯大卫 发表于 2014-10-22 02:01
id 相当于NSObject *  多态 你用父类指针指向子类特有的成员变量  但是编译器在ID类型中没有找到这个成员变 ...

NSLog(@"%d", [p1 age]);
为毛这句就可以啊?
回复 使用道具 举报
Lxy 发表于 2014-10-22 12:26
为什么?哪里讲到的?

教学视频的0808作业的答案里就讲到了
回复 使用道具 举报
Lxy 中级黑马 2014-10-23 01:29:32
10#
弹琴骚年 发表于 2014-10-23 00:17
教学视频的0808作业的答案里就讲到了

嗯,谢谢!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马