OC----动态类型的检测

本文详细介绍了Objective-C中动态类型检测的方法,包括如何判断对象是否能执行特定方法、判断类中是否存在指定方法、判断对象是否属于特定类或其子类等。通过这些方法,开发者可以在运行时进行更灵活的类型检查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

动态类型的检测

10.1 OC 编译器: LLVM 编译器在编译的时候. 判断1个指针是否可以调用指向的对象的方法.判断的准则就是指针的类型.
    [(Person*)obj1 say]; 可以很轻松的把编译器给骗过,程序运行是还会做检查
 
 
10.2 我们就希望.我们可以写代码来先判断1下.对象中是否有这个方法.如果有再去执行.如果没有就别去执行.
    1). 判断对象中是否有这个方法可以执行.--常用,调用别人方法
         - (BOOL)respondsToSelector:(SEL)aSelector;
         如: [p1 respondsToSelector:@selector(say)];
    
    2). 判断类中是否有指定的类方法. --常用
        + (BOOL)instancesRespondToSelector:(SEL)aSelector;
         如:[Person instancesRespondToSelector:@selector(say)];
 
10.3 判断指定的对象是否为指定类的对象或者子类对象.
    - (BOOL)isKindOfClass:(Class)aClass;
    如: BOOL b1 = [s1 isKindOfClass:[Person class]];
        判断s1对象是否为Person对象或者Person的子类对象.
 
10.4 判断对象是否为指定类的对象, 不包括子类.
    - (BOOL)isMemberOfClass:(Class)aClass;
    如: [s1 isMemberOfClass:[Student class]];
        判断s1对象是否为1个Student对象. 不包括Student的子类对象.
 
10.5 判断类是否为另外1个类的子类.
     + (BOOL)isSubclassOfClass:(Class)aClass;
    如: [Student isSubclassOfClass:[Person class]];
        判断Student 类对象是滞为Person的子类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值