黑马程序员技术交流社区

标题: id的使用 [打印本页]

作者: liruixue    时间: 2015-11-23 16:01
标题: id的使用
Id类型及应用场景和动态类型的检测

一、NSObject是所有类的基类,可以指向任何对象
   NSObject和id都可以指向任何对象
   NSObject对象会对进行编译检查(需要强制类型转换)
   Id不需要强制类型转换,id可以直接用
   编译器看到id以后,认为是动态类型,不在检查类型
   Id使用
   Id obj;
   Obj=ani;//ani是子类的实例对象
   [obj run];
   Instancetype 和id的异同:
1) 相同点
  都可以作为方法的返回类型
2)不同点
   Instancetype 可以返回和方法所在类型相同类型的对象,id只能返回未知数据类型的对象;
  Instancetype只能作为返回值,不能像id那样作为参数
二、动态类型的检测
   1.判断类型检测
1)判断某个对象是否是类的实例对象,或者子类的实例对象
  isKindOfClass 使用格式:[对象  isKindOfClass  类对象]
  BOOl  isInstance=[ d  isKindOfClass:[Animal Class] ];
2)isMemberOfClass 判断对象是否是指定类的实例对象
     使用格式:[对象  isMemberOfClass:类对象]
isInstance=[dog isMemberOfClass:[Animal class]];//只能判断当前类或者当前类的子类而子类的子类返回结果为假
3)判断类是否是指定类的子类(类和类之间的关系)
      BOOL  isSub=[Dog isSubclassOfClass:[Animal class]];  //Dog 类继承自Animal
      通过对象来获取类对象
      IsSub=[[dog class]isSubclassOfClass:[ani  class]];
格式:
[类 A isSubclassOfClass:类B]
判断类A是否是类B的子类  是yes  不是no

作者: 不提也罢    时间: 2015-12-2 22:10
还没学,来观摩一下

作者: Mr.Yan    时间: 2015-12-2 23:27
可以的,巩固下这两天知识.
作者: Wangyk    时间: 2016-5-1 21:52
对我很有用,谢谢了




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