zoukankan      html  css  js  c++  java
  • foundation框架之反射机制

    • 概念
    • 例子

    一、概念

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

    //
    //  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;
    }
  • 相关阅读:
    xml传数据
    简单实用的GroupBox控件
    漂亮的NavMenu导航控件
    使用设计模式构建通用数据库访问类
    Windows路由表详解
    zz Linux Shell常用技巧(目录)
    Ubuntu Linux 环境变量PATH设置
    zz eclipse.ini内存设置
    find 用法
    zz【java规范】Java spi机制浅谈
  • 原文地址:https://www.cnblogs.com/letougaozao/p/3630609.html
Copyright © 2011-2022 走看看