黑马程序员技术交流社区
标题:
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