NSObject 类的反射,方法反射(十五)

NSObject 类的反射,方法反射用法如下:


#import "MS_NSReflect.h"
#import "MS_Person.h"
#import "MS_Student.h"

@implementation MS_NSReflect

-(void)showNSReflect
{
    //子类 与 基类 的比较 (isKindOfClass)返回值(true)
    //基类 与 子类 的比较  (isKindOfClass) 返回值(false)
    id student = [[MS_Student alloc] init];
    if([student isKindOfClass:[MS_Person class]])
    {
        NSLog(@"This is Student isKindOfClass Person");
    }
    else
    {
        NSLog(@"This is Student is NOT KindOfClass Person");
    }
    
    //基类 isKindOfClass 子类
    id person = [[MS_Person alloc] init];
    if([person isKindOfClass:[MS_Student class]])
    {
        NSLog(@"This isPerson isKindOfClass Student");
    }
    else
    {
        NSLog(@"This isPerson is NOT KindOfClass Student");
    }
    
    //同一类别的实例 isMemberOfClass 基类/或其它类  返回(false)
    //同一类别的实例 isMemberOfClass 该一类别 返回(true)
    id student_temp = [[MS_Student alloc] init];
    if([student_temp isMemberOfClass:[MS_Person class]])
    {
        NSLog(@"This Student isMemberOfClass Person");
    }
    else
    {
        NSLog(@"This Student is NOT MemberOfClass Person");
    }
    
    //同一类别的判断 返回(true)
    id person_temp = [[MS_Person alloc] init];
    if([person_temp isMemberOfClass:[MS_Person class]])
    {
        NSLog(@"This Person isMemberOfClass Person");
    }
    else
    {
        NSLog(@"This Person is NOT MemberOfClass Person");
    }
    
    //NSObject 的反射
    //类名反射
    NSString *classPerson = @"MS_Person";
    Class singlePersonClass = NSClassFromString(classPerson);
    MS_Person *personReflect = [[singlePersonClass alloc] init];
    personReflect.person = @"张三";
    [personReflect showPerson];
    //方法反射  可以反射私有方法
    NSString *methodPerson = @"showPrivate";
    SEL singlePersonMethod = NSSelectorFromString(methodPerson);
    [personReflect performSelector:singlePersonMethod];
}


@end


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值