黑马程序员技术交流社区

标题: 关于id类型的问题 [打印本页]

作者: Freedam    时间: 2014-6-4 23:57
标题: 关于id类型的问题
本帖最后由 Freedam 于 2014-6-10 12:07 编辑

代码如下:
apple.h
  1. #import <Foundation/Foundation.h>

  2. @interface Apple : NSObject

  3. @property int num;
  4. @property int size;

  5. - (void)test;
  6. - (int)appleSize;

  7. @end
复制代码


apple.m
  1. #import "Apple.h"

  2. @implementation Apple

  3. - (void)test
  4. {
  5.     NSLog(@"apple");
  6. }

  7. - (int)appleSize
  8. {
  9.     return _size;
  10. }

  11. @end
复制代码


plum.h
  1. #import <Foundation/Foundation.h>

  2. @interface Plum : NSObject

  3. @property int num;
  4. @property int size;

  5. - (void)test;
  6. - (int)plumSize;

  7. @end
复制代码


plum.m
  1. #import "Plum.h"

  2. @implementation Plum

  3. - (void)test
  4. {
  5.     NSLog(@"plum");
  6. }

  7. - (int)plumSize
  8. {
  9.     return _size;
  10. }

  11. @end
复制代码


main.m
  1. #import <Foundation/Foundation.h>
  2. #import "Apple.h"
  3. #import "Plum.h"

  4. int main()
  5. {
  6.     Apple *a = [Apple new];
  7.     a.num = 5;
  8.     NSLog(@"num = %d",a.num);
  9.    
  10.     Plum *p = [Plum new];
  11.     p.num = 8;
  12.     NSLog(@"num = %d",p.num);
  13.    
  14.     id data=a;
  15.     [data test];
  16.     int size = [data appleSize];
  17.     NSLog(@"size = %d",[data appleSize]);
  18.    
  19.     data = p;
  20.     [data test];
  21.     size = [data plumSize];
  22.     NSLog(@"size = %d",size);
  23.    
  24.     return 0;
  25. }
复制代码
代码运行时报错如下:

问一下这样得怎样修改,为什么id类型转化成了别的类型。为什么可以准确调用appleSize方法,就是不能调用test方法

作者: Freedam    时间: 2014-6-7 00:14
没人啊,自己顶一个吧




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