首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

NSObject 跟 反射的使用

2013-10-01 
NSObject 和 反射的使用////main.m//Refect////Created by Rayln Guan on 9/13/13.//Copyright (c) 2013 R

NSObject 和 反射的使用

////  main.m//  Refect////  Created by Rayln Guan on 9/13/13.//  Copyright (c) 2013 Rayln Guan. All rights reserved.//#import <Foundation/Foundation.h>#import "Student.h"#import "Person.h"int main(int argc, const char * argv[]){    @autoreleasepool {        Student *stu = [[Student alloc] init];                //判断Student是否是Person的类或者子类        BOOL is = [stu isKindOfClass:[Person class]];        NSLog(@"%i", is);        //判断Student是否是Person类(不包括子类)        [stu isMemberOfClass:[Person class]];        //判断某个类是否实现了某个协议        //[stu conformsToProtocol:<#(Protocol *)#>]                //判断某个类是否拥有参数提供的方法        [stu respondsToSelector:@selector(select)];                //间接调用方法        [stu performSelector:@selector(test1)];        [stu performSelector:@selector(test2:) withObject:@"abc"];        //延迟调用        [stu performSelector:@selector(test2:) withObject:@"abc" afterDelay:2];        #pragma mark - reflect        //类名反射        NSString *str = @"Person";        Class class = NSClassFromString(str);        Person *person = [[class alloc] init];                        //Class变成字符串        NSString *name = NSStringFromClass([Person class]);                //方法反射        NSString *method = @"test1";        SEL selector = NSSelectorFromString(method);        [person performSelector:selector];                //将sel转化为字符串        NSString *method1 = NSStringFromSelector(selector);                [person release];            }    return 0;}


Person和 Student只是定义了test1和test2方法而已

热点排行