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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© chenglei2016 中级黑马   /  2016-3-24 16:19  /  783 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

id数据类型是一种通用的对象类型,它可以用来存储属于任何类的对象。也可以理解为万能指针。
存储在id变量中的对象类型在编译时无法确定,因此一些测试只能在程序执行时进行。
注意:id变量不能使用点运算符,如果尝试这样做,编译器会马上报错。
NSObject类和id类型:             NSObject类和id类型都可以指向任何对象。
             但NSObject会进行编译时检查(需要强制类型转换);
             而id不需要强制类型转换,id可以直接使用,编译器在看到id以后,认为是动态类型,不再进行检查。
instancetype(在iOS5之后推出的)类型和id的异同点:
             (1)相同点:
                       都可以作为方法的返回类型
             (2)不同点:
                       instancetype可以返回和方法所在的类相同的对象,而id只能返回未知类型的对象
                       instancetype只能作为返回值,而id还可以作为参数。
id的应用(已有一个Animal和Dog的类,Dog类是继承自Animal类的,且Animal类中有run方法,Dog类中覆盖了run方法):
               //创建一个动物的对象
              Animal  *ani = [[Animal alloc] init];
              //创建一个狗的对象
              Dog *dog = [[Dog alloc] init];
              id obj;
              obj = ani;
              [obj run];//动物跑
              obj = dog;
              [obj run];//狗跑

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马