黑马程序员技术交流社区

标题: 关于 id 语法的问题 [打印本页]

作者: 程序猿-2014    时间: 2014-4-11 16:15
标题: 关于 id 语法的问题
本帖最后由 程序猿-2014 于 2014-4-12 11:13 编辑

#import <Foundation/Foundation.h>
@interface Person : NSObject
@property int age;
@end

@implementation Person
@end

int main()
{
    id p = [[Person alloc] init];
    p.age = 10;//运行时这里报错是为什么?
    NSLog(@"%d",age);
    return 0;
}
求大神解惑
作者: 微尘•逐梦    时间: 2014-4-11 17:14
id类型不能用点语法,可以改为[p setAge:10];希望我的回答对你有帮助。
作者: 于清扬    时间: 2014-4-11 17:50
  1. int main()
  2. {
  3.     id p = [[Person alloc] init];
  4.    
  5.     /**
  6.      不是运行时才报错,这样写编译都通过不了。
  7.      p.age = 10;相当于 [p setAge:10];
  8.     id 是不能使用点语法,也可以这样理解:
  9.      id能指向任何OC对象,但是编译器是找不到setAge:这个方法的
  10.      编译器是很笨的!!!
  11.      */
  12.     p.age = 10;
  13.     NSLog(@"%d",age);
  14.     return 0;
  15. }
复制代码





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