首页 > 其他 > 详细

foundation框架之反射机制

时间:2014-03-29 00:05:59      阅读:443      评论:0      收藏:0      [点我收藏+]
  • 概念
  • 例子

一、概念

反射:根据字符串实例话对象或者调用方法

bubuko.com,布布扣
//
//  main.m
//  反射机制
//
//  Created by apple on 14-3-28.
//  Copyright (c) 2014年 apple. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Person.h"

#import "Student.h"
#import "Person.h"

#pragma mark NSObject常用方法
void test() {
    Student *stu = [[[Student alloc] init] autorelease];
    
    // isKindOfClass判断对象是否属于某个类 或者 子类
    if ( [stu isKindOfClass:[Person class]] ) {
        // NSLog(@"stu属于Person或者继承自Person");
    }
    
    // isMemberOfClass判断对象是否属于某个类(不包括子类)
    BOOL result = [stu isMemberOfClass:[Student class]];
    // NSLog(@"%i", result);
    
    
    // 直接调用
    // [stu test];
    
    // 间接调用
    [stu performSelector:@selector(test)];
    // [stu performSelector:@selector(test2:) withObject:@"abc"];
    // 延迟2秒后调用test2:方法
    [stu performSelector:@selector(test2:) withObject:@"abc" afterDelay:2];
}


//类的反射机制
void test1()
{
    NSString *str = @"Person";
    Class class = NSClassFromString(str);
    Person *person = [[[class alloc] init] autorelease];
    
    NSLog(@"%@", person);
    
    NSString *str1 = NSStringFromClass([person class]);
    
    NSLog(@"%@", str1);
}


//方法的反射机制
void test2()
{
    Person *person = [[[Person alloc] init] autorelease];
    
    NSString *str = @"test:";
    
    SEL sel = NSSelectorFromString(str);
    [person performSelector:sel withObject:@"name"];
    
    NSString *str1 = NSStringFromSelector(sel);
    
    NSLog(@"%@",str1);
    
}
int main(int argc, const char * argv[])
{

    @autoreleasepool {
        
        test2();
        
    }
    return 0;
}
bubuko.com,布布扣

foundation框架之反射机制,布布扣,bubuko.com

foundation框架之反射机制

原文:http://www.cnblogs.com/letougaozao/p/3630609.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!