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

来源:互联网 发布:安卓上的windows模拟器 编辑:程序博客网 时间:2024/06/11 23:20

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


0 0
原创粉丝点击