• 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;
    }
  • 相关阅读:
    ViewPager+导航条实现方式比较---------来自互联网
    ScrollView重写实现监听
    android:layout_gravity和android:gravity
    解决Android Studio添加依赖时出现“Manifest merger failed
    Android SD卡读取简单操作
    Android文件读取简单操作
    20160623
    Mac 下两款 Markdown 编辑器 Mou/MacDown 大 PK
    iOS开发编码建议与编程经验(书写规范)
    iOS开发调试技巧总结
  • 原文地址:https://www.cnblogs.com/letougaozao/p/3630609.html
Copyright © 2020-2023  润新知